如何写htaccess重定向我的网站


How to write htaccess to redirect my site?

我使用SMF来运行我的论坛。

这是旧的论坛URL => hxxp://www.example.com/

但是现在,我把我的论坛移动到"forum"文件夹=> hxxp://www.example.com/forum/

Google和其他搜索引擎索引了我的网站url: hxxp://www.example.com/index.php?topic=99.0

当用户访问hxxp://www.example.com/index.php?topic=99.0时,没有找到

因为他必须去hxxp://www.example.com/forum/index.php?topic=99.0,对吗?

我想重定向url从 hxxp://www.example.com/index.php ?主题= 99.0 hxxp://www.example.com/forum/index.php ?主题= 99.0

我该怎么办?我试过了,但没有用。

RewriteEngine On
RewriteBase /
RewriteRule ^index.php?topic=([0-9]+).([0-9]+)$ forum/index.php?topic=$1.$2 [R]

取决于你把htaccess放在哪里。如果是/forum/,则

RewriteCond %{REQUEST_URI} !^'/forum'/
RewriteRule ^index'.php$ http://%{HTTP_HOST}/forum/index.php [R]

AFAIK查询字符串不受RewriteRule regexp的影响。http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html

我猜你必须转义rewriterrule:

中的点(.)元字符
RewriteRule ^index'.php?topic=([0-9]+)'.([0-9]+)$ /forum/index.php?topic=$1.$2 [R]

我希望这对你有帮助

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .+ - [L]
RewriteRule ^index.php?topic([=0-9.]+)$  old/index.php?topic=$1 [QSA,L]