Linux
為什麼 .htaccess 規則在 Linux 上不起作用(ubuntu 14.04)
我已將執行 WAMP 的 Windows 機器上的站點複製到具有標準 LAMP 堆棧的 Linux 機器上。
除了 .htaccess 中的規則外,一切正常。我已經通過測試一個簡單的規則確認 .htaccess 正在工作,所以我知道它與 apache 配置無關。這些規則在我的 Windows 機器上執行得非常好。
這是我的 .htaccess 文件中的規則副本。
RewriteRule ^admin/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/$ index.php?admin=1&class=$1&id=$2&method=$3 [L,QSA] RewriteRule ^admin/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/$ index.php?admin=1&class=$1&method=$2 [L,QSA] RewriteRule ^(.*)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/$ index.php?class=$1&id=$2&method=$3 [L,QSA] RewriteRule ^admin/([A-Za-z0-9-]+)/$ index.php?admin=1&class=$1 [L,QSA] RewriteRule ^(.*)/([A-Za-z0-9-]+)/$ index.php?class=$1&method=$2 [L,QSA] RewriteRule ^download/([A-Za-z0-9-]+.*) index.php?class=downloads&method=download&target=$1 [L,QSA] RewriteRule ^stream/([A-Za-z0-9-+]+.*) index.php?class=downloads&method=download&target=$1 [L,QSA] RewriteRule ^(.*)/$ index.php?class=$1 [L,QSA]
有什麼理由說明這些不能在 Linux 上執行。
編輯:
我請求的 URL 是
http://domain.com/access
所以我創建了這個有效的規則RewriteRule access index.php?class=access
。
我請求的網址是
http://example.com/access
…您發布的所有規則都不符合此類請求。最後一條規則需要尾部斜杠,因此
http://example.com/access/
(帶有尾部斜杠)應該可以正常工作。要使尾部斜杠可選,您可以將最後一條規則更改為:
RewriteRule ^(.*)/?$ index.php?class=$1 [L,QSA]
請注意,
RewriteRule
模式只是從更改^(.*)/$
為^(.*)/?$
-?
使得前面的字元/組是可選的。如果根本不需要尾部斜杠,則將其刪除。