Web.config: перенаправлять URL-адреса, введенные с косой чертой в URL, без конечной косой черты

Я унаследовал сайт PHP сайта, работающий на IIS 7.5.

Если я пойду к:
https://www.example.com/page ошибок нет, он отображает содержимое page.php, как и ожидалось.

Если я пойду к:
https://www.example.com/page/ Я получаю 404 не найдена ошибка. Я бы хотел, чтобы это перенаправляло / page и отображало содержимое page.php.

Я полагаю, это потому, что сервер ищет файл page / .php (или page.php / ??), но мне нужна помощь с тем, какой код поместить в web.config, чтобы это исправить.

1

Решение

Если вы используете 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, то в .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]
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]