簡體   English   中英

htaccess mod_rewrite未檢測到項目參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM