Htaccess重写:我想首先将URL重定向到新形式,然后使用RewriteUrl来实现这些

时间:2014-03-22 23:25:13

标签: apache .htaccess url mod-rewrite url-rewriting

我目前的网址结构如下:

example.com/show.php?ctg=1&entry=some-entry-string

因为我想切换到使用新表单:

example.com/some-entry-string.html

如果我必须坚持使用当前的应用程序代码,那么该怎么做?

话虽这么说,我希望旧网址永久(301)重定向到新表单,然后,直到我的应用程序代码被重写,我将使用以下(当然,我在应用程序中的链接将调整为新形式):

RewriteRule ^([^/]*)\.html$ /show.php?ctg=1&entry=$1 [L]

以上行按预期工作 - 新表单中的每个请求都会被正确重写,以便我的应用能够处理它并显示正确的内容。我已经尝试了很多选项来实现这个问题的顶部,但无济于事。

1 个答案:

答案 0 :(得分:1)

下面的代码应该

RewriteEngine On

#External redirect with THE_REQUEST trick; change R to R=301 when everything works correctly
RewriteCond %{THE_REQUEST} ^(GET|POST)\ /show\.php\?ctg=1&tag=(.*)\ HTTP
RewriteRule ^ /%2\.html? [R,L]

#Internal rewrite
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.html$ /show.php?ctg=1&tag=$1 [L]

(以上改编自另一个答案,here