【发布时间】:2013-11-24 13:25:28
【问题描述】:
我正在重写特定页面访问的请求,但我想为一些页面添加排除项。假设,我希望我的请求 site.com/page/test 到 goto site.com/page.php?str=test 但我想为一个字符串添加一个排除项,以便不去那个页面而是去另一个页面,比如: site.com/page/contact 应该去 site.com/contact.php
这就是我的尝试:
RewriteRule ^static/mobile_app/?$ static/mobile_app.php [QSA,L]
RewriteRule ^static/([a-zA-Z0-9%.\-_]+)/?$ static/page.php?url_key=$1 [QSA,L]
我在文件末尾也有这个:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .? /static/page.php?url_key=404 [L]
奇怪的是,如果我尝试以下规则,它会起作用:
RewriteRule ^static/mobile_app.php$ static/mobile_app.php [QSA,L]
RewriteRule ^static/([a-zA-Z0-9%.\-_]+)/?$ static/page.php?url_key=$1 [QSA,L]
意思是,如果我尝试编写带有扩展名的完整文件名,它可以工作。有人可以帮忙吗?谢谢。
【问题讨论】:
-
试着清楚地定义你的问题,因为它不是很容易理解。
-
@anubhava 谢谢。我再次在最后一行写了描述。现在可以理解了吗?我想说的是,如果我在规则中写了完整的文件名,它对我有用。但我希望规则能够在不将 .php 添加到我的规则的情况下工作。
-
@RajaAmerKhan:什么有效或无效?我的意思是你在浏览器中输入的网址是什么?
contact的规则在哪里? -
@regilero 规则 static/mobile_app.php 适用于 static/mobile_app.php [L]。而 static/mobile_app 不会转到 static/mobile_app.php [L]。
标签: php apache .htaccess rewrite rule