Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重写规则问题-模块化php错误请求_Php_Regex_Apache_.htaccess_Mod Rewrite - Fatal编程技术网

重写规则问题-模块化php错误请求

重写规则问题-模块化php错误请求,php,regex,apache,.htaccess,mod-rewrite,Php,Regex,Apache,.htaccess,Mod Rewrite,我最终希望做的是do/about,而不是/main.php?p=about。我看过一些帖子(!),但没有一篇是我写的 首先,我将重写规则放在httpd.conf中。这是正确的吗? 很多地方提到了.htaccess,但我在任何看起来很重要的目录中都没有该文件(唯一的引用是在phpMyAdmin中)。我将文件从phpMyAdmin复制到htdocs中,然后用一个简单的规则替换文本: RewriteEngine on RewriteRule home main.php [L] 但是,localhos

我最终希望做的是do/about,而不是/main.php?p=about。我看过一些帖子(!),但没有一篇是我写的

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

RewriteEngine on
RewriteRule home main.php [L]
但是,localhost/home报告了一个错误的请求

那么首先我应该使用哪个文件&if.htaccess我应该把这个文件放在哪里&我必须在任何其他文件中引用它吗?第二,以下方法是否适用于我想要的方法

RewriteEngine on
RewriteRule ^([^/]+)/?  main.php?p=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
谢谢你的澄清和帮助。
Mike

重写规则
之后,您实际上有条件(
RewriteCond
)。应该是相反的

通过
httpd.conf
启用
mod_rewrite
.htaccess
,然后将此代码放入
文档根目录下.htaccess
文件:

RewriteEngine On

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

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

建议阅读:mod_rewrite已启用,但通过httpd.conf启用.htaccess的位置在哪里?我在评论中提到了两个:第一个是“要求所有人都拒绝”,第二个是“允许所有人都拒绝”AllIt现在正在工作。它一定是丢失的.htaccess文件。非常感谢:)我再过10分钟就不能接受你的回答了。
RewriteRule
之后,你实际上有条件(
RewriteCond
)。应该是相反的。