2012-10-04 163 views
2

只是想知道如何使用Mod_Rewrite在我的URL末尾添加尾部斜線?添加尾部斜線mod_rewrite

這是我目前的.htaccess文件:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]*)$ index.php?pageName=$1 

我的網址顯示,像這樣:

WWWW。 ****** .COM /網頁

我想讓它顯示像這樣:

WWWW。 ****** .com/pageName/

URL在內部持有GET請求,但我希望它看起來像一個真正的目錄。

回答

6

您可以輕鬆地向客戶端看到的網址添加尾部斜線,但您必須考慮重定向瀏覽器後得到的請求中的尾部斜槓。

所以重定向可以是這個樣子:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*[^/])$ /$1/ [L,R=301] 

你會想它上面的:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]*)$ index.php?pageName=$1 

規則集,因爲重定向到所需的路由至index.php之前發生。請注意,當瀏覽器被重定向到一個以/結尾的URL時,您的index.php規則將具有參數pageName,並帶有斜槓。

+0

工作,但現在的問題正如你所說,GET現在包括在實際價值的斜線:/任何想法如何使它只是膚淺的? –

0

我知道這是舊的,但它仍然是有用的其他人找到它。

喬恩林的答案是正確的,我將此添加爲評論,但我沒有足夠的聲譽。

該操作的評論關於刪除尾部斜線,因爲你知道它總是會有一個斜線在最後,你可以$pageName = substr($pageName, 0, -1);。這就是我至少在做的事情。

希望這是有用的。

+0

我說我想添加尾部斜線,而不是刪除它們。而且,這隻有在斜線包含在數據庫記錄中時纔有效。我在做的方式要求你使用mod_rewrite使用apache,與PHP mate無關,因爲我們正在重寫URL顯示請求的方式。 –