设置具有多个网址条件的htaccess

时间:2017-02-28 08:23:47

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

我尝试使用多个条件在.htaccess创建规则但没有成功。

我需要所有的请求,例如: http://www.domain.com/portfolio-view/my-project-name/

重定向到: http://www.domain.com/#cbp=http://www.domain.com/portfolio-view/my-project-name/

仅限包含“投资组合视图”的网址而不是“#cbp =”。

我正在尝试这样做,但它会产生无限循环。

另外,我正在尝试,但它不起作用:

RewriteEngine On
RewriteBase 
RewriteCond %{REQUEST_URI} ^/portfolio-view/.*
RewriteRule ^(.*)$ http://www.domain.com/#cbp=%{REQUEST_URI} [R=301,L]

1 个答案:

答案 0 :(得分:0)

您实际上只需检查请求是否以字符串/portfolio-view/开头。

这应该给出正确的结果:

RewriteCond %{REQUEST_URI} ^/portfolio-view/.*
RewriteRule ^(.*)$ http://%{SERVER_NAME}/#cbp=http:\/\/%{SERVER_NAME}%{REQUEST_‌​URI} [R=303,L,NE]

如果uri以文字true开始(^),则此条件为/portfolio-view/
.*表示条件不应该关注以下内容。

如果规则匹配,则您不必检查其他条件,因为如果它已经以/#cbp=开头,则无法以/portfolio-view开头。

我在测试机器上测试过并且工作得很好但是我在我的网络服务器配置文件中做了(在网站启用目录下,我建议)。

我在htaccess文件中尝试过,上面的例子也是如此。

如果.htaccess文件位于网站基本目录中,您似乎可以简单地省略RewriteBase指令。我在我的测试服务器上尝试了你的例子,这就是我的.htacces现在的样子:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/portfolio-view/.*
RewriteRule ^(.*)$ http://%{SERVER_NAME}/#cbp=http:\/\/%{SERVER_NAME}%{REQUEST_‌​URI} [R=303,L,NE]

在我的测试机器上,它可以正确重定向。

为了进一步阅读,我建议: