我在我正在做的PHP站點中遇到一些mod_rewrite規則的問題。mod_rewrite項目在.htaccess中的規則
我在Apache 2.4.9(Unix) - Mac OSX Yosemite附帶的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 [email protected]
DocumentRoot "/Users/Me/Sites/project"
ServerName project.local
ServerAlias project.local
ErrorLog "/Users/Me/Sites/logs/project_error_log"
</VirtualHost>
,這裏是我在page.php
:
<?php
echo "Hello " . $_GET['var'];
?>
我可以成功訪問http://project.local/pages
,並根據上述規則顯示pages.php
的內容。但是當我去http://project.local/page/testpage
,它顯示Hello
但不是$_GET['var']
。我究竟做錯了什麼?
您是否在進入'page/testpage'時得到_do_? – Halcyon
它顯示一個空白頁面。如果我連接一個'Hello World'或者什麼的,它會在頁面上輸出,所以一定會到達'page.php'頁面。 – ncf
用上面的例子更新我的問題來澄清。 – ncf