RewriteRule - 使用破折号获取所有网址

时间:2010-06-07 10:41:27

标签: mod-rewrite .htaccess

我需要将所有带短划线的网址重定向到特定网页 例如:
site.com/this-urlsite.com/page.php?url=this-url

重写规则

RewriteRule ^(.+-.+)$ page.php?url=$1

挂起http。没有反应。

出了什么问题以及如何做到这一点?

2 个答案:

答案 0 :(得分:0)

试试这个,你可能会有一个无限循环。

RewriteCond $0 !^page\.php
RewriteRule ^(.+-.+)?$ page.php?url=$1 [L,B,QSA]

现在:

  • 如果您已经请求了page.php
  • ,则RewriteCond会避免匹配规则
  • QSA标志将原始请求中的所有查询参数附加到重写的请求
  • B标志转义反向引用$1,以便可以安全地用作查询参数
  • L标志不是绝对必要的,但避免在匹配此标记时评估其他重写规则

答案 1 :(得分:0)

您也可以尝试以下选项:

RewriteCond %{REQUEST_URI} !^page\.php
RewriteRule - page.php?url=%{REQUEST_URI} [L,B,QSA]