簡體   English   中英

從URL刪除php擴展名-使用htaccess只能刪除一個URL

[英]Remove php extension from URL - except one and only one URL using htaccess

我正在使用此代碼從URL末尾刪除.php,使它們更像SEF。

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/(.+)\.php[^\s]* [NC]
RewriteRule ^ /%1 [R=301,NE,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [QSA,NC,L]

這是通用的,並且對每個UR都適用,但是我想知道如何為一個和唯一一個URL創建一個例外 ,例如: http://www.domain.com/services : http://www.domain.com/serviceshttp://www.domain.com/services.php而不會影響其他所有。 這可能嗎?

我嘗試了簡單的重定向,但進入了循環。

編輯!

我沒有提到我也有以下規則:

添加www。

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

刪除索引索引中的擴展名.php已被裁剪)

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s(.*)/index/?([^\ \?]*) [NC]
RewriteRule ^ %1/%2 [R=301,L]

你應該 :

  • RewriteCond添加到禁用的services.php => services
  • 添加另一條規則,以強制執行services => services.php ,因為第一條規則不會阻止用戶手動使用services url

完整的.htaccess

# domain.tld > www.domain.tld (visible)
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

# services > services.php (visible)
RewriteRule ^services/?$ services.php [R=301,QSA,L]

# filename > filename.php (transparent)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [QSA,NC,L]

# filename.php > filename (visible, exception for services.php)
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/(.+)\.php[^\s]* [NC]
RewriteCond %{REQUEST_FILENAME} !services\.php
RewriteRule ^ /%1 [R=301,NE,L]

# index > /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s(.*)/index/?([^\ \?]*) [NC]
RewriteRule ^ %1/%2 [R=301,L]

我相信只需對您的.php刪除規則進行少量更改即可完成此工作:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/(.+?)\.php[\s?] [NC]
RewriteRule !^services\.php$ /%1 [R=301,NE,NC,L]

你可以試試這個嗎

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

您可以為每個php文件添加一個規則:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^services  /services.php [L]

暫無
暫無

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

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