2015-02-09 42 views
1

我試圖將我的網頁從http://example.com/page.php重定向到http://example.com/page/。我想使用這個規則是:用正則表達式在線測試儀就像我的.htaccess文件(http://www.regextester.com/)不完整的......使用時
RewriteRule ^(.*)/([a-z0-9A-Z]+)\.(php|html)$ $1/$2/ [R=301,L]
雖然這個表達式正確檢測到頁面.htaccess RewriteRule不適用於「/」

如何讓這個正則表達式在.htaccess文件中工作?

編輯
所以現在我有這個,以確保實際的頁面可見:
RewriteRule ^([a-z0-9A-Z]+)\.(php|html)$ /$1/ [R=301,L]
RewriteRule ^([a-z0-9A-Z]+)/$ /$1.php [L]

不過,Chrome的告訴我,我有一個重定向循環,這我能理解。我會如何阻止它?

+0

豈不'http://example.com/page /'給404給你? – anubhava 2015-02-09 20:56:21

+0

@anubhava一旦瀏覽器被重定向,我打算使用另一個RewriteRule創建一個隱藏的URL和正確的路徑,但是當然我需要理解這個正則表達式來完成這個工作。 – StrongJoshua 2015-02-09 20:57:42

回答

1

.htaccess是每個目錄指令,Apache從RewriteRule URI模式中刪除當前目錄路徑(從而導致斜槓)。

您可以使用thed規則:

# To externally redirect /dir/file.php to /dir/file 
RewriteCond %{THE_REQUEST} \s/+(.+?)\.php[\s?] [NC] 
RewriteRule^/%1 [R=302,L,NE] 

# To internally forward /dir/file to /dir/file.php 
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f [NC] 
RewriteRule ^(.+?)/?$ /$1.php [L] 

這將重定向到/page.php/page/php/不到位等規則,你將得到404

+0

你能檢查我的編輯嗎? – StrongJoshua 2015-02-09 21:14:03

+0

檢查更新,您需要使用'THE_REQUEST' – anubhava 2015-02-09 21:23:16

+0

謝謝:)對於.htaccess,我仍然需要學習很多東西! – StrongJoshua 2015-02-09 21:31:06