我有一个网址重写问题。 我网站的所有主题网址都在www.mywebsite.com/topic.php?topic=id上 我想将这些网址更改为www.mywebsite.com/topic-id.html
我在.htaccess文件中用它做了:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^topic-([0-9]+)\.html$ /topic.php?topic=$1
现在我希望所有指向/topic.php?topic=id的网址都像topic-id.html一样被重写,以便只为用户显示一个网址,而不会重写我的所有代码。 可以这样做吗?
我用那种方式尝试了[R]标志:
RewriteRule ^topic-([0-9]+)\.html$ /topic.php?topic=$1 [R]
但它与我正在寻找的相反,因为它将所有网址(topic-id.html)转换为(topic.php?topic = id)。
我指明,我没有寻找"重复内容问题"
的解决方案任何帮助都会很棒,谢谢
答案 0 :(得分:0)
你可以试试这个,我为你跳这个工作
RewriteCond %{THE_REQUEST} \s/topic\.php\?id=([_0-9a-zA-Z-]+)\s [NC]
RewriteRule ^%1? [R=301,L]
RewriteRule ^([_0-9a-zA-Z-]+)$ /topic.php?id=$1 [L]
RewriteCond %{THE_REQUEST} \s/topic\.php\?id=([_0-9a-zA-Z-]+)\s [NC]
RewriteRule ^ %1.html? [R=301,L]
RewriteRule ^([_0-9a-zA-Z-]+?)(?:\.html)?$ /index.php?id=$1 [NC,L]
答案 1 :(得分:0)
将以下内容置于现有规则之上(RewriteEngine on
行旁边):
RewriteCond %{THE_REQUEST} /topic\.php\?id=(.+)\sHTTP [NC]
RewriteRule ^ /topic-%1.html [L,R]
答案 2 :(得分:0)
您需要使用的是:
RewriteEngine On
RewriteRule ^topic-([^-]*)\.html$ /topic.php?topic=$1 [L]