Правило htaccess для пересылки / login / и / login на ту же страницу? - PullRequest
6 голосов
/ 10 июля 2009

В моем текущем файле .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 ]

13 голосов
/ 10 июля 2009

Просто сделайте косую черту необязательной:

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]
2 голосов
/ 10 июля 2009

Это прекрасно работает для меня:

Rewriterule ^ login (/ |) $ /videos/login.php

1 голос
/ 10 июля 2009

Использование mod_rewrite

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/videos/login/?$
RewriteRule (.*) /videos/login.php [L,R=301]
0 голосов
/ 10 июля 2009
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.

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

...