htaccess rule to forward /login/ and /login to sam

2019-03-27 20:44发布

问题:

I have the following rule in my current .htaccess file to redirect /videos/login/ requests to /videos/login.php

RewriteRule login/ /videos/login.php

This works fine if I am access login page using http://mysite.com/videos/login/ but when I am trying to access the same page using http://mysite.com/videos/login (without ending slash) then it gives me "404 page not found" error.

Please tell me what will be the correct rule of .htaccess file so that any request for http://mysite.com/videos/login/ or http://mysite.com/videos/login will point to the same /videos/login.php page.

Thanks

回答1:

Just make the trailing slash optional:

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

But you should better use just one variant (with or without trailing slash) and redirect one to the other:

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

# remove trailing slash
RewriteRule (.*)/$ /$1 [L,R=301]


回答2:

This work fine for me:

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



回答3:

Using mod_rewrite

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


回答4:

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.

Had to use pre because the site let's me post only one hyperlink :/