0

我想使用 apache rewrite 模块进行复杂的重写。

例如,如果网址是http://www.site.com/wallhttp://www.site.com/profilehttp://www.site.com/info我想重写为http:// www.site.com/gotopage.php?page=wallhttp://www.site.com/gotopage.php?page=profile等等

但是,如果 url 不是那个,我想以另一种方式传递它,例如。如果 url 是http://www.site.com/newthing那么它应该重写为http://www.site.com/index.php?params=newthing

请帮忙。我试图查看其他问题,但没有得到它!

4

1 回答 1

2
RewriteEngine On
# Special rule for 3 unique cases
RewriteRule /(wall|profile|info)$ /gotopage.php?page=$1 [L]

# Only rewrite if the URL has not yet been rewritten
RewriteCond %{HTTP_URL} (?!gotopage\.php|index\.php)
RewriteRule /([^/]+) /index.php?params=$1 [L]

这是逐行解释:

  1. 任何与 3 个指定单词之一匹配的 URL 都会被重写以转到gotopage.php.

  2. 这一行是下一行的条件。只有当 URL 与这个正则表达式匹配时,才会考虑下一行。正则表达式检查以确定请求尚未发送到gotopage.phpindex.php。如果是,我们不想重写任何东西(我们只会陷入无限循环)。

  3. 如果请求的 URL 没有后续的斜杠,则将其重写为index.php.

于 2012-08-19T03:11:49.360 回答