簡體   English   中英

刪除尾部斜杠和php / html擴展名。 尾部斜杠方案無法刪除擴展名

[英]Removing trailing slash AND php/html extension. Trailing slash scenario fails to remove extension

/filename.php變為/ filename-失敗

/filename.php/變成/filename.php-失敗!

/ filename /成為文件名-成功!

在帶有尾部斜杠的方案中,如何刪除擴展名?

Options +MultiViews

RewriteEngine On

# remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} \s(.+?)/+[?\s]
RewriteRule ^(.+?)/$ /$1 [R=301,L]

# remove php/html extension
RewriteCond %{THE_REQUEST} /index\.(php|html)[\s/?] [NC]
RewriteCond %{REQUEST_URI} !/system/ [NC]
RewriteRule ^(.*?)index\.(?:php|html)(.*)$ $1$2 [R=301,NE,L]

您可以使用以下2條規則:

# externally redirect /dir/file.php to /dir/file and remove index
RewriteCond %{THE_REQUEST} \s/+(.*?/)?(?:index)?(.*?)\.(?:html?|php)/?[\s?] [NC]
RewriteRule ^ /%1%2 [R=302,L,NE]

# remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} \s(.+?)/+[?\s]
RewriteRule ^(.+?)/$ /$1 [R=302,L]

您最好這樣做:

RewriteEngine On

# Trim trailing slash (only if request is not for a directory)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]

# Trim .php/.html from request (exclude requests to /system/*)
# Ex: /page.php -> /page
RewriteCond %{REQUEST_URI} !/system/ [NC]
RewriteRule ^(.+).(?:php|html)$ /$1 [L,R=301]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM