1

我在 .htaccess 文件中跟踪代码。该文件位于子文件夹中,例如 /content/。

   RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d 
    RewriteRule ^([^/]+)(/([^/]+))?(/(edit)+)(/([^/]+))?/?$ edit.php?category=$1&slug=$3&edit=$5&password=$7 [L]
    RewriteRule ^([^/]+)(/([^/]+)?/?)$ content.php?category=$1&slug=$3 [L]

我期待上面的代码会重写,

  1. mydomain.com/content/text1/text2/edit/my_password 到 mydomain.com/content/edit.php?category=text1&slug=text2&password=my_password
  2. mydomain.com/content/text1/text2 到 mydomain.com/content/content.php?category=text1&slug=text2
  3. mydomain.com/content/text1 到 mydomain.com/content/content.php?category=text1
  4. mydomain.com/content/ 到 mydomain.com/content/content.php

上面的代码正确重写,但它破坏了资产网址。例如,它将http://mydomain.com/content/js/tms.js重写为其他内容,css 文件也是如此。我的资产文件夹是 /img、/css、/js。

如果我评论 RewriteRule ^([^/]+)(/([^/]+))?(/(edit)+)(/([^/]+))?/?$ edit.php?category=$1&slug=$3&edit=$5&password=$7 [L] 行它适用于资产

任何想法如何解决这一问题?

4

1 回答 1

0

条件RewriteCond %{REQUEST_FILENAME} -d意味着“请求是针对现有目录的”。如果您!在前面添加一个,-d它会将其更改为“请求不是针对现有目录”。

尝试:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)(/edit)+/([^/]+?)/?$ edit.php?category=$1&slug=$2&password=$4 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+?)/?$ content.php?category=$1&slug=$2 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+?)/?$ content.php?category=$1 [L]
于 2013-03-03T12:07:48.697 回答