重写.htaccess中的规则不适用于MAC OS

时间:2013-09-04 09:39:40

标签: php macos apache .htaccess

嗨朋友我在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]

需要您身边的任何帮助

Thanx Guyzzz ......

1 个答案:

答案 0 :(得分:0)

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

首先,您的3个条件仅适用于紧随其后的规则,因此仅RewriteRule (.*)$ index.php?module=$1 [L]。这意味着最后两个规则没有条件,恰好是 OK 因为它们永远不会被使用。 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]