Web.config:将带尾部斜线的 URL 重定向到不带尾部斜线的 URL

Web.config: redirect URLs entered with trailing slash to URL without 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/ ??),但我需要一些帮助来确定要在 [=25 中放置什么代码=] 来解决这个问题。

如果您使用 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 ^(.*)/$ / [R=301,L]

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

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