0

您好,感谢您抽出宝贵时间查看此内容。

我在我的 .htaccess 中设置了规则来创建对 seo 友好的 url。我使用 mysql 和 php 来填充每个页面上的内容,这些内容都在 index.php 上。该规则设置为涵盖两个级别的链接,例如。

mysite.com/first-level-link mysite.com/first-level-link/second-level-link

该脚本目前在网站前端(所有重定向到 index.php 的网页)上运行良好。但我无法访问位于服务器上真实目录中的站点后端,路径如下所示 - mysite.com/admin/index.php

我已经包含了两个规则/条件,如果它们存在,它们应该忽略目录和文件。我将包括以下代码:

Options +SymLinksIfOwnerMatch

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

RewriteRule \.(css|jpe?g|gif|png|js)$ - [L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ index.php?page=$1 
RewriteRule ^.*/(.*)$ index.php?page=$1 
4

1 回答 1

1

!-fand!-d条件仅适用于 next RewriteRule,因此您的第二条规则没有任何与之相关的条件。您还需要复制该规则的条件。另一个问题是第二条规则被第一条规则所取代。由于在它有机会/some/path匹配^(.*)$之前匹配^.*/(.*)$,所以你需要交换它们。

因此,您的所有规则(从 开始RewriteEngine on)将如下所示:

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

RewriteRule \.(css|jpe?g|gif|png|js)$ - [L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*/(.*)$ index.php?page=$1 

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?page=$1 
于 2012-08-01T03:16:42.090 回答