RewriteRule问题 - 模块化PHP错误请求

时间:2013-10-20 09:23:16

标签: php regex apache .htaccess mod-rewrite

我最终要做的是做/关于而不是/main.php?p=about。我看过一些帖子(like this!)但似乎没有一个帖子可供我使用。

首先,我将重写规则放在httpd.conf中这是正确的吗? 很多地方都提到.htaccess但我在任何看起来很重要的目录中都没有该文件(唯一的引用是在phpMyAdmin中)。我将文件从phpMyAdmin复制到htdocs中,然后用一个简单的规则替换文本:

RewriteEngine on
RewriteRule home main.php [L]

然而,localhost / home报告了错误请求。

首先,我应该使用哪个文件&如果.htaccess我应该把文件放在哪里&我必须在任何其他文件中引用它吗?其次,以下内容可能适用于我想要的方法吗?

RewriteEngine on
RewriteRule ^([^/]+)/?  main.php?p=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

感谢任何清晰度和救命。 麦克

1 个答案:

答案 0 :(得分:0)

RewriteCond之后你确实有条件(RewriteRule)。它应该是其他方式。

启用mod_rewrite.htaccesshttpd.conf,然后将此代码放入DOCUMENT_ROOT/.htaccess文件中:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ /main.php?p=$1 [L,QSA]

RewriteRule ^home/?$ main.php [L,NC]

建议阅读:Apache mod_rewrite Introduction