我正在使用Apache 2.2和mod_rewrite。我想采取以下网址并将其映射到另一个网址。模式很简单,就像这样:
http://domain/test/ex1.html - > http://domain/app/index.php/content/?name=ex1
我在.htaccess文件中尝试了以下内容(放在docroot的/ test /目录中):
RewriteEngine On
RewriteBase /app/
RewriteRule (.*)\.html index.php/content/?name=$1
和
RewriteEngine On
RewriteRule (.*)\.html /app/index.php/content/?name=$1
我不确定反向引用是否正确所以设置为$ 0和$ 2但似乎从来没有帮助过。
我也尝试将RewriteLogLevel设置为9.
有一个步骤几乎就在那里: 重写'ex1.html' - > '的index.php /内容/?名称= EX1'
重写日志的最后一行如下: [perdir / var / www / domain / htdocs / test /]使用/app/index.php/content/进行内部重定向[内部重定向]
如何将其重写为/app/index.php/content/?name=ex1?
EDIT 所以在docroot文件中使用它作为.htacces适用于RedirectMatch:
RewriteEngine On
RewriteBase /
RedirectMatch ^(.*)/(.*)\.html$ http://domain/app/index.php/content/?name=$2
#this doesnt work - adding to docroot allows for it to pick up but still using test/ex1 rather than just ex1
#RewriteRule ^(.*)\.html$ /app/index.php/content/?name=$1
任何有助于获得最低RewriteRule(目前已被注释掉)的工作将会受到赞赏。
感谢
答案 0 :(得分:1)
在您的示例中,您提到了domain / test /所以我将基于从/test/*.html重写为/app/index.php/content/?name =
RewriteEngine On
RewriteBase /
RewriteRule ^test/(.*)\.html$ /app/index.php/content/?name=$1
这应该有效。
答案 1 :(得分:0)
RewriteCond %{REQUEST_URI} ^/app/(.*)\.html$
RewriteRule ^/app/(.*)\.html$ /app/index.php/content/?name=$1
这假设重写基数为/