2013-11-23 41 views
1

我想讓SEO友好的URL使用Apache mod_rewrite。mod_rewrite不能與我的網址一起工作

我正常的網址是這樣的 -

index.php?p=about 
index.php?p=contact 
index.php?p=this 

我期待SEO友好的URL應該是與此類似 -

localhost/php_advance/ch02/about 
localhost/php_advance/ch02/contact 
localhost/php_advance/ch02/this 

我創建一個.htaccess文件,並做一些改變試了一下到我的apache httpd.conf文件。

這是我的.htaccess文件

<ifModule mod_rewrite.c> 

# Turn on the engine: 
RewriteEngine on 

# Set the base to this directory: 
RewriteBase /php_advance/ch02/ 

# Redirect certain paths to index.php: 
RewriteRule ^(about|contact|this|that|search)/?$ index.php?p=$1 

</ifModule> 

而且也,在httpd.conf文件的末尾,我加了一些像這樣的代碼 -

<Directory "C:/wamp/www/php_advance/ch02"> 
AllowOverride All 
</Directory> 

NOTE:我使用WAMP服務器和Windows 07

但這種編碼不適合我。希望有人能幫助我。 謝謝。

+0

你得到404嗎? – anubhava

+0

@anubhava,不,我不能得到404。當我在瀏覽器地址欄上輸入'http:// localhost/php_advance/ch02/about'時,我可以得到'Not Found 請求的URL/php_advance/ch02/about在這個服務器上找不到.' – TNK

+0

哦,那就是404 :) – anubhava

回答

2

確保了mod_rewrite已打開。在httpd.conf文件,你應該有類似的東西:

LoadModule rewrite_module modules/mod_rewrite.so 

然後確保你的htaccess文件是在你的/ch02/目錄。

+0

Jon Lin,我是否需要將這行代碼'LoadModule rewrite_module modules/mod_rewrite.so'插入到我的httpd.conf文件中?是的,我的.htaccess文件在我的'/ ch02 /'目錄中。 – TNK

+0

我檢查了我的httpd.conf文件,發現mod_rewrite已打開。這是來自文件的那一行 - 「LoadModule rewrite_module modules/mod_rewrite.so」。 – TNK

0

試試這個:

<IfModule mod_rewrite.c> 
    RewriteEngine On 

    RewriteBase /php_advance/ch02/ 
    RewriteRule ^index\.php$ - [L] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule . /php_advance/ch02/index.php [L] 
</IfModule> 
+0

感謝您的快速響應。但它不適合我。 – TNK

+0

當你說它不工作,如何?當你在'http:// localhost/php_advance/ch02/about'對你的服務器執行'curl -I'時,頭部響應是什麼? – JakeGould

+0

然後我收到了這條消息 - '找不到 在這臺服務器上找不到請求的URL/php_advance/ch02/about /。 – TNK