0

嗨朋友们,我用 PHP 为我的网站编写了重写规则,它在 windows 和 Linux 操作系统上运行良好但是我当时把这个项目移到 MAC OSX 是出错并且没有正确重写

.htaccess 文件代码如下

RewriteEngine On
RewriteBase /ProjectName

RewriteRule uploads/(.*)  uploads/$1 [L]
RewriteRule css/(.*)  css/$1 [L]
RewriteRule libs/(.*)  libs/$1 [L]
RewriteRule js/(.*)  js/$1 [L]
RewriteRule images/(.*)  images/$1 [L]
RewriteRule Files/(.*)  Files/$1 [L]
RewriteRule API/(.*)  API/$1 [L]


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !example.php
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule (.*)$ index.php?module=$1 [L]
RewriteRule (.*)/(.*)$ index.php?module=$1&action=$2 [L]
RewriteRule (.*)/(.*)/(.*)$ index.php?module=$1&action=$2&id=$3 [L]

需要您的任何帮助

谢谢Guyzzz...

4

1 回答 1

0

不知道你是如何让它在任何操作系统上工作的,因为最后一组规则永远不会被应用。

首先,您的 3 个条件只会应用于紧随其后的规则,因此只有RewriteRule (.*)$ index.php?module=$1 [L]. 这意味着最后两个规则没有条件,这恰好是可以的,因为它们无论如何都不会被使用。该RewriteRule (.*)$ index.php?module=$1 [L]规则的模式匹配所有内容,因此最后两条规则是多余的。你可能追求的是:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !example.php
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule (.*)/(.*)/(.*)$ index.php?module=$1&action=$2&id=$3 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !example.php
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule (.*)/(.*)$ index.php?module=$1&action=$2 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !example.php
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule (.*)$ index.php?module=$1 [L]
于 2013-09-04T14:26:40.607 回答