我的旧网站上有这样的链接:
我想把它改成:
我尝试了许多不同的规则,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,为什么?
答案 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]