Web.config:将以斜杠输入的URL重定向到没有斜杠的URL

时间:2018-07-20 18:38:20

标签: php web-config iis-7.5 trailing-slash

我继承了一个在IIS 7.5上运行的PHP网站。

如果我去: https://www.example.com/page没有错误,它将按预期显示page.php内容。

如果我去: https://www.example.com/page/我收到404找不到错误。我想要重定向/ page并显示page.php内容。

我相信这是因为服务器正在寻找文件page / .php(或page.php / ??),但是我需要一些有关将什么代码放入web.config来解决此问题的帮助。

1 个答案:

答案 0 :(得分:0)

如果您使用iis,则将其添加到web.config中。要始终从URL中删除尾部斜杠:

<rule name="Remove trailing slash" stopProcessing="true">  
<match url="(.*)/$" />  
<conditions>  
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />  
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />  
</conditions>  
<action type="Redirect" redirectType="Permanent" url="{R:1}" />  
</rule> 

如果您有Apache Web服务器,则在.htaccess中添加:

 RewriteEngine on
 #unless directory, remove trailing slash
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^(.*)/$ /$1 [R=301,L]

 #resolve .php file for extensionless php urls
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_FILENAME}\.php -f
 RewriteRule ^(.*)$ $1.php [L]

 #redirect external .php requests to extensionless url
 RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^/]+/)*[^.#?\ ]+\.php([#?][^\ ]*)?\ HTTP/
 RewriteRule ^(([^/]+/)*[^.]+)\.php /$1 [R=301,L]