2014-01-16 77 views
2

我有wampserver 2.4,我似乎無法讓Mod_Rewrite工作。我已經在Apache服務中啓用了它,並取消了httpd.conf中的mod_rewrite.so並重新啓動了服務器。我也檢查了我的phpinfo(),並在服務下列出了mod_rewrite。WAMP 2.4 Mod_rewrite 2.4

我測試它的網站是在地址localhost/eb/index.php後面我試圖在event.php頁面上測試它,其中的url看起來像localhost/eb/event.php?id = 1

這就是我的.htaccess文件在我的index.php文件所在的localhost/eb的根目錄中的樣子。

<IfModule mod_rewrite.so> 
RewriteEngine on 
RewriteBase /eb/ 
RewriteRule ^event/([0-9]+)/?$event.php?id=$1 
</IfModule> 

即使在此之後它仍然顯示的URL本地主機/ EB/event.php?ID = 1

回答

2

你需要額外的外部重定向也。保持你的.htaccess這樣的:

Options +FollowSymLinks -MultiViews 
RewriteEngine on 
RewriteBase /eb/ 

RewriteCond %{THE_REQUEST} /event\.php\?id=([^\s&]+) [NC] 
RewriteRule^event/%1? [R=301,L] 

RewriteRule ^event/([0-9]+)/?$ event.php?id=$1 [L,QSA] 
+0

它工作!請你解釋一下爲什麼要這麼多規則?我讀過的所有教程都只顯示在OP中使用重寫規則。另外,我現在需要做什麼,以便我的CSS腳本可以在重寫的頁面上工作?這是一個動態頁面,所以CSS調用是在header.php中,並且該文件包含在其他頁面文件中 –

+0

對於css/js問題,在css,js,images文件中使用絕對路徑而不是相對路徑。這意味着你必須確保這些文件的路徑以'http://'或斜槓'/'開始。 或者您可以嘗試在您的頁面標題中添加此項:'' – anubhava

+0

這裏需要2條規則。規則1:將實際的'/eb/event.php?id=123'重定向到'/ eb/event/123',並將第二條規則重定向到實際的'/ eb/event/event.php?ID = 123'。 – anubhava

2

上文檔根目錄添加RewriteBase /eb/而不是/ EB /目錄,並添加你的所有的重寫上/ eb /目錄。

更新

在您的http.conf

<Directory *>    
    # changed from None to FileInfo 
    AllowOverride FileInfo   
</Directory> 
+0

所以在我的WWW根文件夾,我添加了 RewriteEngine敘述.htaccess文件在RewriteBase/EB/然後根據EB夾我的.htaccess文件有一切都在OP中,但不包括RewriteBase。在這些更改之後,mod_rewrite仍然不起作用: -/ –

+0

@ConnerBurnett請使用以下解決方案檢查mod_rewrite:http://stackoverflow.com/questions/9021425/how-to-check-if-mod-rewrite-is-啓用在PHP –

+0

運行回聲in_array('mod_rewrite',apache_get_modules())從你給我的結果回來作爲1. –