Mod Rewrite file.php?串起来

时间:2014-06-06 11:18:18

标签: .htaccess mod-rewrite

我的旧网站上有这样的链接:

  

http://domain.com/image.php?690

我想把它改成:

  

http://domain.com/old690

我尝试了许多不同的规则,fe。:

  

RewriteRule ^ image.php?(。+)旧$ 1 [L]

编辑:所有规则如下:

  

RewriteEngine On

     

RewriteRule ^ admin /(.*)ninja-admin / $ 1 [L]

     

RewriteRule ^ index.php $ - [L]

     

RewriteCond%{REQUEST_FILENAME}!-f

     

RewriteCond%{REQUEST_FILENAME}!-d

     

RewriteRule。 index.php [L]

     

RewriteRule ^ image.php \?(。+)旧$ 1 [L]

什么是正确的RewriteRule,为什么?

2 个答案:

答案 0 :(得分:1)

我使用此http://example.com/old4444转发给http://example.com/image.php?file=4444

此外,浏览器会将http://example.com/old4444保留在地址栏中。

RewriteCond %{QUERY_STRING} !marker  
RewriteCond %{QUERY_STRING} file=([0-9]+)
RewriteRule ^/?image.php$ %1? [R=301,L]
RewriteRule ^/?old([-a-zA-Z0-9_+]+)$ image.php?marker&file=$1 [L]

答案 1 :(得分:0)

你是颠倒的。

将此代码放入htaccess

RewriteEngine On
RewriteBase /

RewriteRule ^old([0-9]+)$ image.php?$1 [L]
RewriteRule ^admin/(.*)$ ninja-admin/$1 [L]
RewriteRule ^index\.php$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]

左图的规则如下

RewriteRule ^old([0-9]+)$ image.php?$1 [L]

它会将/old123(其中123是一个或多个数字)的每个网址转发到image.php?123


编辑:如果您想禁止直接访问image.php?xxx,那么您可以这样做

RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} \s/image\.php\?([0-9]+) [NC]
RewriteRule ^ old%1 [R=301,L]

RewriteRule ^old([0-9]+)$ image.php?$1 [L]
RewriteRule ^admin/(.*)$ ninja-admin/$1 [L]
RewriteRule ^index\.php$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]