我有一个简单的网站,其中包含一个带有div的页面,该div根据用户选择的链接填充了ajax内容。此站点在Apache服务器上运行,域根目录中包含.htaccess文件。对www.mydomain.com的请求被定向到scripts / index.php,而对动态内容(但不是资源文件)的请求被定向到同一个.php脚本,请求的内容作为参数传递(例如,www.mydomain.com / myProject将被重写为scripts / index.php?dynContent = myProject)。
我的重写规则在下面,并且大多数情况下他们正确执行这些描述的任务;但是,我遇到了一些与第二个条件不匹配的URL,即使我期望它们 - 虽然这是我第一次为.htaccess文件编写规则所以我真的不知道是什么我正在谈论......第二个条件失败的URL的一个很好的例子是www.mydomain.com/about,但我通过测试随机单词/字母遇到了更多。
你能告诉我为什么www.mydomain.com/about失败第二个条件吗?此外,如果有更优雅的方式来实现我上面描述的目标,我很乐意了解它。谢谢!!
RewriteCond %{HTTP_HOST} ^(www.)?mydomain.com$ [NC]
RewriteRule ^(/)?$ scripts/index.php [L]
RewriteCond %{REQUEST_URI} .*[^index.php|.css|.js|.jpg|.html|.swf]$
RewriteRule .* scripts/index.php?dynContent=$1 [L]
答案 0 :(得分:0)
这是因为第二条规则中的正则表达式不正确。
将您的代码更改为:
RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.com$ [NC]
RewriteRule ^(/)?$ scripts/index.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\.(php|css|js|jpe?g|html|swf)$
RewriteRule ^(.*)$ scripts/index.php?dynContent=$1 [L]