htaccess удаление обратной косой черты - PullRequest
0 голосов
/ 29 апреля 2018

Я уверен, что этот вопрос поднимался раньше, но я не знаю, что искать.

Мой файл .htaccess, кажется, удаляет символ '/', когда я нажимаю ссылки для сайта. Например, когда я нажимаю «www.mysite.com/home», меня направляют на «www.mysite.comhome»

Вот мой .htaccess

# Turn mod_rewrite on
Allow from all
RewriteEngine On
Options +FollowSymLinks -MultiViews

ErrorDocument 404 /errors/404.php

DirectoryIndex home.php

# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L]

# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [L]

RewriteCond %{REQUEST_METHOD}  !=POST
RewriteCond %{REQUEST_URI} ^(.*?)(/{2,})(.*)$
RewriteRule . %1/%3 [R=301,L]

Еще раз спасибо !!

1 Ответ

0 голосов
/ 01 мая 2018

Проблема - ваше последнее правило, которое пытается вывести несколько слэшей из URL.

Вы можете использовать эти правила в корне вашего сайта .htaccess:

ErrorDocument 404 /errors/404.php
DirectoryIndex home.php
Options +FollowSymLinks -MultiViews
RewriteEngine On

# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R=301,L,NE]

# strip multiple slashes
RewriteCond %{THE_REQUEST} //
RewriteRule ^.*$ /$0 [R=301,L,NE]

# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [L]

Обязательно используйте новый браузер, чтобы избежать старого кэша, или полностью очистите кэш браузера, прежде чем тестировать это изменение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...