我觉得我对mod重写有一个很好的处理,但我似乎无法让这个工作。
我的设置:如果页面实际存在(即contact.php),则加载“真实”页面。否则,假设网址是一个带有SEO友好网址的博客条目,并将该网址作为查询字符串提供给我的索引页。
示例:http://www.example.org/my_latest_post应重写为http://www.example.org/index.php?blogurl=my_latest_post
如果我将“丑陋”的网址粘贴到浏览器中,页面加载就可以了。但如果我运行SEO友好网址,我会得到可怕的404。
我的htaccess文件现在实际上很轻。一些缓存内容,管道XML到PHP(用于动态RSS提要),自定义404文档。
以下是相关的mod_rewite内容:
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(([A-Za-z0-9]+[-]+[A-Za-z0-9]+)+[/])$ index.php?blogurl=$1 [NC,L]
据我所知,我说如果文件名是实际文件或目录的一部分,那么就让它站起来。我的其他页面都正常工作,所以这似乎有效。
然后,其他一切都应该被认为是SEO网址的一部分,并传递给index.php?blogurl = [网址]。
但那不起作用。
我忽略了什么愚蠢的事情
感谢您的帮助!
答案 0 :(得分:1)
保持简单并使用此规则:
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^([\w-]+)/?$ index.php?blogurl=$1 [QSA,L]
[\w-]
将匹配[a-zA-Z0-9_-]
个字符。