2011-10-19 175 views
1

我希望我的網址無擴展名,所以沒有.php擴展名,我也希望不會有機會使用尾部斜槓訪問網址。刪除php擴展名,停止訪問帶有.php擴展名的url並刪除尾部斜槓

下刪除PHP擴展,如果你嘗試用.PHP

我開始寫一個規則來阻止你與訪問/重定向和訪問它thens重定向到擴展名的URL,但它不工作,任何幫助?

#this removes php extension 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 

# stops you accessing url with.php 
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^.?\ ]+)\.php 
RewriteRule ^([^.]+)\.php(/.+)?$ /$1%{PATH_INFO} [R=301] 

# stops you accessing url with/**DOESNT WORK** 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)/$ /$1 [R=301,L] 

回答

1

你看待事物的向後:你有沒有「刪除php擴展」的第一條規則,它將其添加到不已經有它的URL(從技術上講,任何別不包含一段時間)。

我想你想要更多的東西是這樣的:

RewriteEngine On 
RewriteBase/

# Remove .php from any URLs that contain it, using an external 301 redirect 
RewriteCond %{QUERY_STRING} !^no-redirect-loop(&|$) 
RewriteRule ^(.*)\.php$ $1 [NS,R=301,L] 

# Now add it back internally 
RewriteCond %{QUERY_STRING} !^no-redirect-loop(&|$) 
RewriteRule ^(.*)$ $1.php?no-redirect-loop [NS,QSA] 

編輯:在調試another similar answer,我意識到,以前的解決方案,我張貼在這裏不打算在.htaccess文件工作。我已經編輯了上面的示例代碼來使用一個相當醜陋的kruge來代替重定向循環。 kluge的副作用是所有腳本都會看到一個名爲no-redirect-loop的額外空URL參數。

相關問題