Php .htaccess中项目的Mod_重写规则

Php .htaccess中项目的Mod_重写规则,php,apache,.htaccess,mod-rewrite,Php,Apache,.htaccess,Mod Rewrite,在我正在做的一个PHP站点中,我遇到了一些mod_重写规则的问题 我使用的是MacOSX Yosemite附带的Apache2.4.9(Unix)-Apache 我在项目的根目录中有.htaccess文件,它被设置为在虚拟主机中运行。。。所以我联系项目的地址是http://project.local。以下是我在.htaccess中的内容: RewriteEngine On # Don't rewrite files RewriteCond %{REQUEST_FILENAME} !-f # D

在我正在做的一个PHP站点中,我遇到了一些mod_重写规则的问题

我使用的是MacOSX Yosemite附带的Apache2.4.9(Unix)-Apache

我在项目的根目录中有
.htaccess
文件,它被设置为在虚拟主机中运行。。。所以我联系项目的地址是
http://project.local
。以下是我在
.htaccess
中的内容:

RewriteEngine On

# Don't rewrite files
RewriteCond %{REQUEST_FILENAME} !-f
# Don't rewrite directories
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^pages pages.php [NC]
RewriteRule ^page/([0-9a-zA-Z]+) page.php?var=$1 [QSA]
以下是我的虚拟主机设置:

<VirtualHost *:80>
    ServerAdmin me@me.com
    DocumentRoot "/Users/Me/Sites/project"
    ServerName project.local
    ServerAlias project.local
    ErrorLog "/Users/Me/Sites/logs/project_error_log"
</VirtualHost>

我可以访问
http://project.local/pages
成功,并显示上述规则中
pages.php
的内容。但是当我进入
http://project.local/page/testpage
,它显示的是
Hello
,而不是
$\u GET['var']
。我做错了什么

通过将此代码放置在.htaccess中禁用选项
多视图

Options -MultiViews
RewriteEngine On

# Don't rewrite files
RewriteCond %{REQUEST_FILENAME} !-f
# Don't rewrite directories
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^pages pages.php [NC,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^page/([0-9a-zA-Z]+)/?$ page.php?var=$1 [QSA,L,NC]

选项
MultiViews
Apache的内容协商模块使用,该模块在
mod_rewrite
之前运行,并使Apache服务器匹配文件扩展名。因此
/file
可以在URL中,但它将提供
/file.php

我通过在
.htaccess
文件中添加以下行来修复此问题

Options FollowSymLinks

当转到
页面/testpage
时,您会得到什么?它显示一个空白页面。如果我连接了一个
Hello World
或其他东西,它会在页面上输出,因此肯定仍然会到达
page.php
页面。用上面的示例更新了我的问题以澄清问题。尝试将regexp更改为
^page/([0-9a-zA-Z]+)$
(注意
$
)。确保您匹配所有URL。@Halcyon
array(0){}
您在浏览器中输入了什么?同时显示您的完整访问权限。我使用
http://project.local/page/testpage
。我已经添加了一个解决问题的答案。感谢您的帮助,我确实在
.htaccess
中添加了
Options-MultiViews
,但它是否存在似乎没有什么区别。您添加的行应该是
Options+FollowSymLinks
现在尝试添加
Options+MultiViews
,然后检查$\u GET变量。
Options FollowSymLinks