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]
我在 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]