[英]htaccess mod_rewrite not detects params for project
我基於http://www.php-mvc.net/啟動了一個php項目,並在Google上搜索了如何設置WAMP Server
以啟用URL
重寫。
我正在運行最新版本的WAMP。
1)在httpd.conf
上啟用mod_rewrite
模塊
2)在httpd-vhosts.conf
我添加了一個虛擬主機
<VirtualHost *:80>
ServerName phpmvc.test
ServerAlias *.phpmvc.test
VirtualDocumentRoot "C:\wamp\www\phpmvc"
ErrorLog "logs\errors.log"
<directory "C:\wamp\www\phpmvc">
Options Indexes FollowSymLinks
AllowOverride all
Order Deny,Allow
Deny from all
Allow from all
</directory>
3)在我的主機文件中,我添加了主機127.0.0.1 phpmvc.test
4)在.htacces文件上我有這行
RewriteEngine on
RewriteRule ^(.*)\/$ index.php?url=$1 [QSA,L]
設置完文件后,我重新啟動了Apache,當我去phpmvc.test
它工作正常,但是當我嘗試phpmvc.test/test
它顯示了一條錯誤,指出該服務器上找不到所請求的URL。
編輯:我嘗試了RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
但它顯示了相同的錯誤EDIT2:我嘗試了編輯:我嘗試了Rahil Wazir的建議,但仍然無法正常工作。
我有此控制器文件IndexController.class.php
,如果我使用以下URL訪問它,則該文件有效: phpmvc.test?url=index
但是如果我嘗試phpmvc.test/index
它說在服務器上找不到該index
。
<?php
class IndexController {
public static function index() {
echo "Index controller";
}
}
在根目錄上打印$_GET
和$_SERVER
會得到一個空的Array()
和服務器數組。 如果我去phpmvc.test/index?url=index
我得到$_GET["url"]
和$_SERVER [QUERY_STRING] => url=index
。
這是因為Apache認為/test
是您要訪問的文件或目錄,可能不存在。
您需要應用大多數Front Controller模式框架使用的兩個著名條件:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
它告訴Apache重寫模塊,除非存在來自所請求uri的文件或目錄,然后應用重寫規則,否則呈現文件或目錄的內容。
通過檢查$ _GET和$ _SERVER變量中得到的內容進行調試。
print_r($_GET);
print_r($_SERVER);
比較['url']索引值的差異。 另外,它可能取決於您在/ index前面的URL上看到的子文件夾深度。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.