Вопрос по php, apache, .htaccess, url-rewriting – Правило htaccess для пересылки / login / и / login на ту же страницу?

6

У меня есть следующее правило в моем текущем файле .htaccess для перенаправления/videos/login/ запросы к/videos/login.php

RewriteRule login/ /videos/login.php

Это работает нормально, если я захожу на страницу входа с помощьюhttp://mysite.com/videos/login/ но когда я пытаюсь получить доступ к той же странице, используяhttp://mysite.com/videos/login (без косой черты), то это дает мне "404 страница не найдена" ошибка.

Подскажите пожалуйста, какое будет правильное правило файла .htaccess, чтобы любой запросhttp://mysite.com/videos/login/ или жеhttp://mysite.com/videos/login будет указывать на ту же страницу /videos/login.php.

Спасибо

Ваш Ответ

4   ответа
2

Переписать ^ логин (/ |) $ /videos/login.php

1

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/videos/login/?$
RewriteRule (.*) /videos/login.php [L,R=301]
13

RewriteRule ^videos/login/?$ /videos/login.php

Но вам лучше использовать только один вариант (с косой чертой или без нее) и перенаправить один на другой:

# add trailing slash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .*[^/]$ /$0/ [L,R=301]

# remove trailing slash
RewriteRule (.*)/$ /$1 [L,R=301]
Но #add trailing slash добавит косые черты ко всем моим URL, которые я не хочу, есть некоторые выбранные URL, для которых я хочу эту функцию Prashant
Я только что упомянул оба варианта. Если вы хотите использовать косую черту, просто используйте первую.
@ Gumbo ваше правило работает нормально, оно открывает одну и ту же страницу с косой чертой и без нее, но я хочу, чтобы кто-нибудь получил доступ к / videos / login, тогда он будет перенаправлен на / videos / login /, возможно ли это с помощью htaccess. Prashant
Конечный слеш будет добавлен к каждому URL-пути, который не может быть сопоставлен с существующим файлом (RewriteCond %{REQUEST_FILENAME} !-f). Но если вы этого не хотите, перечислите те URL-пути, для которых вы хотите, с помощьюRewriteCond %{REQUEST_URI} ^/(videos/login|foo/bar|baz/quux|…)$ вместо.
0
redirect 301 /videos/login/index.html http://yoursite.com/videos/login.php

The server will change the address http://mysite.com/videos/login/ and http://mysite.com/videos/login both to http://mysite.com/videos/login/index.html, based on the configuration but this is default. Before it encounters a 404 this address is redirected to the new one. At least this works at my site.

потому что сайт позволял мне публиковать только одну гиперссылку: /

Похожие вопросы