使用/ in .htaccess重定向301地址

时间:2013-11-04 22:03:01

标签: php apache .htaccess

我想用/:

重定向地址
mywebsite.com/img-41/

到另一个没有/:

的人
mywebsite.com/img-41

当然41是变量。 我试过这个:

RewriteRule ^img-([0-9]*)/$ /img-$1 [L,R=301,NC]

但它不起作用:(

你能帮帮我吗? 先谢谢,卢卡斯。

编辑:     SetEnv PHP_VER 5_TEST     SetEnv REGISTER_GLOBALS 0

Options +FollowSymlinks
# Activation du module de réécriture d'URL :
RewriteEngine on
RewriteRule ^img-([0-9]*)$ img.php?&numlsv=$1 [L]
RewriteRule ^img-([0-9]*)/$ img.php?&numlsv=$1 [L]

RewriteRule ^home-([0-9]*)-([a-zA-Z0-9]*)$ index.php?&numpage=$1&auteur=$2 [L]
RewriteRule ^home-([0-9]*)$ index.php?&numpage=$1 [L]


RewriteRule ^img-([0-9]*)/$ /img-$1 [L,R=301,NC]

Rewritecond %{HTTP_HOST} ^www.mywebsite.com$
Rewriterule ^(.*) http://mywebsite.com/$1 [QSA,L,R=301]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ / [R=301,L]
SetEnv SESSION_USE_TRANS_SID 0

这是整个.htaccess。

当我说它不起作用时,我的意思是当我用斜杠到达我的地址时,导航器停留在这个地址中,它没有没有斜线的地址:(

3 个答案:

答案 0 :(得分:1)

尝试添加像这样的重写基础

RewriteBase /
RewriteRule ^img-([0-9]+)/$ img-$1 [L,R=301,NC]

答案 1 :(得分:0)

您的重写规则仅重定向以img

开头的请求

尝试添加/,如下所示:

RewriteRule ^/img-([0-9]*)/$ /img-$1 [L,R=301,NC]

我在你编辑之前回复了 您已经在此行之前执行了带有L标志的内部重定向

Options +FollowSymlinks
# Activation du module de réécriture d'URL :
RewriteEngine on
RewriteRule ^img-([0-9]*)/$ /img-$1 [L,R=301,NC]
RewriteRule ^img-([0-9]*)/$ img.php?&numlsv=$1 [L]

RewriteRule ^home-([0-9]*)-([a-zA-Z0-9]*)$ index.php?&numpage=$1&auteur=$2 [L]
RewriteRule ^home-([0-9]*)$ index.php?&numpage=$1 [L]


Rewritecond %{HTTP_HOST} ^www.mywebsite.com$
Rewriterule ^(.*) http://mywebsite.com/$1 [QSA,L,R=301]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ / [R=301,L]
SetEnv SESSION_USE_TRANS_SID 0

答案 2 :(得分:0)

订单在规则方面很重要,您有规则可以映射您尝试匹配的模式之前执行重定向的规则。因此,重定向永远不会发生,URI已经被更改了!

RewriteRule ^img-([0-9]*)$ img.php?&numlsv=$1 [L]
RewriteRule ^img-([0-9]*)/$ img.php?&numlsv=$1 [L]

RewriteRule ^home-([0-9]*)-([a-zA-Z0-9]*)$ index.php?&numpage=$1&auteur=$2 [L]
RewriteRule ^home-([0-9]*)$ index.php?&numpage=$1 [L]


RewriteRule ^img-([0-9]*)/$ /img-$1 [L,R=301,NC]

这里,第二条规则:

RewriteRule ^img-([0-9]*)/$ img.php?&numlsv=$1 [L]

具有与上一条规则完全相同的模式:

RewriteRule ^img-([0-9]*)/$ /img-$1 [L,R=301,NC]

因此,第一条规则与之匹配,最后一条规则永远不会被应用。您始终首先要重定向:

Options +FollowSymlinks
# Activation du module de réécriture d'URL :
RewriteEngine on
RewriteRule ^img-([0-9]*)/$ /img-$1 [L,R=301,NC]

Rewritecond %{HTTP_HOST} ^www.mywebsite.com$
Rewriterule ^(.*) http://mywebsite.com/$1 [QSA,L,R=301]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ / [R=301,L]

RewriteRule ^img-([0-9]*)$ img.php?&numlsv=$1 [L]
RewriteRule ^img-([0-9]*)/$ img.php?&numlsv=$1 [L]

RewriteRule ^home-([0-9]*)-([a-zA-Z0-9]*)$ index.php?&numpage=$1&auteur=$2 [L]
RewriteRule ^home-([0-9]*)$ index.php?&numpage=$1 [L]