2014-01-16 77 views
1

我正在爲我的測試服務器使用子域URL。喜歡的東西:在子域上設置Apache HTAccess重寫規則

http://dev.mysite.com

我已經在我的.htaccess文件如下:

RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] 
RewriteRule ^(.*)$ http://%1/$1 
RewriteRule ^about/(.*)$ /about.php?request=$1 [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.*)$ $1.php [NC,L] 

上述工作以及在生產(無子域)的URL集合。但它並不能完全切斷我的開箱。例如,如果我輸入

http://dev.mysite.com/about 

我收到404錯誤。但附加的.php擴展名的作品如下。

http://dev.mysite.com/about.php 

我猜測這與處理www子域的第一個重寫條件有關。我將如何修改我的.htaccess文件來說明dev子域?

+0

驗證是否你的'.htaccess'啓用與否,通過把相同的垃圾文字在上面的'.htaccess',看看如果它產生500(內部服務器)錯誤或不? – anubhava

+0

@anubhava在文件 –

+0

這意味着你的Apache配置的頂投入額外的文本後,沒有錯誤尚未啓用的.htaccess – anubhava

回答

1

看來你的.htaccess沒有啓用。

驗證是否.htaccess啓用與否,通過把相同的垃圾文字對你.htaccess的頂部,看看它是否產生500(內部服務器)錯誤或不?

要啓用.htaccesshttpd.conf文件將需要這行:

AllowOverride All 
0

您至少需要AllowOverride AllAllowOverride FileInfo以使htaccess文件在您的server/vhost配置中工作。 FileInfo用於像mod_rewrite之類的東西。

此外,請確保您已加載mod_rewrite。

您也想改變這種狀況:

RewriteCond %{REQUEST_FILENAME}.php -f 

到:

RewriteCond %{DOCUMENT_ROOT}/$1.php -f 

因爲mod_rewrite的將認識到,about有一個PHP文件,並使它所以/about/something通過了-f測試,導致/about/something.php