我的.htaccess中有以下RewriteRule,可以从友好的URL重定向到我的主应用程序文件:
RewriteRule ^\/(.*).html$ home/www/page.php?p=$1 [L]
这应该将指向html页面的任何url发送到page.php,并将url作为将由应用解析的参数。 这适用于看起来像http://www.example.com/hello.html
的网址问题是,当网址包含目录路径时,我收到404错误,例如:http://www.example.com/category/hello.html
错误内容为:“文件不存在:/ home / www / category”
似乎它首先寻找'类别'路径而不是处理.htaccess 任何想法如何解决这个问题?
答案 0 :(得分:1)
您是否尝试从重写规则中删除初始\/
?
我刚刚尝试了以下.htaccess
文件:
RewriteEngine On
RewriteRule ^(.*)\.html$ page.php?p=$1 [L]
将此作为我的page.php
:
<?php print_r($_GET); ?>
当我去/category/hello.html
时,我得到以下内容:
Array ( [p] => category/hello )
完全符合预期。
另请注意,您需要在.
之前转义html
,因为您可能不希望/category/hellozhtml
工作。