我用自己的解决方案替换旧的开源解决方案,但是我需要所有旧的链接来处理我的新事物。使用RewriteRule会在图像和链接的相对路径上产生很多问题,而且我们想要推广新的URL。
旧网址: www.website.com/folder1/folder2/number/
新网址: www.anotherwebsite.com/folder1/index2.php?f=show&e=number
其中'数字'是一个' id'我在我的程序中使用。
旧解决方案有这个.htaccess条目,所以如果可能的话我还需要考虑不同的条目格式
<IfModule mod_rewrite.c>
SetEnv MY_REWRITE 1
Options +FollowSymlinks -Multiviews
RewriteEngine on
RewriteRule ^.*\.(jpg|gif|png|css|js)$ - [L,PT]
RewriteRule ^([0-9]+)/?$ ?CategoryID=$1 [QSA,L]
RewriteRule ^([a-zA-Z_]+)(/([0-9]+))?(/([a-zA-Z_]+))?/?$ index.php?View=$1&EntryID=$3&Msg=$5 [QSA,L]
RewriteRule ^([a-zA-Z_]+)(/([0-9]+))?(/([0-9]+))?(/([a-zA-Z_]+))?/?$ index.php?View=$1&CategoryID=$3&EntryID=$5&Msg=$7 [QSA,L]
</IfModule>
我已经考虑过将所有内容重定向到一个php页面,它只会获取最初请求的url,然后通过重定向发送一个标题信息到新工具,但是我想避免做一个hacky的工作,并重定向一切。 htaccess如果可能的话。
答案 0 :(得分:1)
您可以将此重定向的新规则用作第一条规则:
<IfModule mod_rewrite.c>
SetEnv MY_REWRITE 1
Options +FollowSymlinks -MultiViews
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?website\.com$ [NC]
RewriteRule ^(folder1)/folder2/([0-9]+)/?$ http://www.anotherwebsite.com/$1/index2.php?f=show&e=$2 [L,NC,R=301,QSA]
RewriteRule ^.*\.(jpg|gif|png|css|js)$ - [L,PT]
RewriteRule ^([0-9]+)/?$ ?CategoryID=$1 [QSA,L]
RewriteRule ^([a-zA-Z_]+)(/([0-9]+))?(/([a-zA-Z_]+))?/?$ index.php?View=$1&EntryID=$3&Msg=$5 [QSA,L]
RewriteRule ^([a-zA-Z_]+)(/([0-9]+))?(/([0-9]+))?(/([a-zA-Z_]+))?/?$ index.php?View=$1&CategoryID=$3&EntryID=$5&Msg=$7 [QSA,L]
</IfModule>