2013-05-11 32 views
0

我正在使用PHP处理Web应用程序。
我想要干净的网址,所以我为它写了一个.htaccess文件。一切都很好,但只适用于1规则。
看一下下面的代码:为2条规则使用.htaccess时出现不希望的结果

RewriteEngine on 
Options +FollowSymLinks 

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

# Rule No.1 
RewriteRule ^(.*)/(.*)/(.*)/?$ index.php?page=$1&id=$2 [NC,N] 

# Rule No.2 
RewriteRule ^(.*)/?$ index.php?page=$1 [NC,L] 

这是我的.htaccess文件的内容。
如果我删除规则No.1,并且页面是www.site.com/news之类的东西,一切正常。但是,当我想导航到页面www.site.com/news/1/sample-text时,所有的CSS,JavaScript和图像文件都将被破坏(我无法再访问它们)。
尽管我在.htaccess文件中编写了Rule No.2,但任何操作都不起作用,问题是钢铁还活着。

所有图像,css和javascript路径类似于./js/jquery.js格式。
另外,我把RewriteBase /放在.htaccess文件中。但是... :(

请帮我

回答

0

规则会更好,如果他们是这样的:

# Rule No.1 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/(.*)/(.*)/?$ index.php?page=$1&id=$2 [L] 

# Rule No.2 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/?$ index.php?page=$1 [L] 

=>这里需要重复的RewriteCond线:它们只适用于。随后的重写规则

注:

  • NC标志(不区分大小写)是无用这里
  • 第一条规则不使用$ 3
  • ([^ /] +)都会比更有意义(。*)
+0

我做了你说的话。但没有解决! – 2013-05-12 04:58:04

+0

对于CSS,JavaScript和图片,您需要使用绝对路径(例如/js/jquery.js)或者在页面中插入一个''标签。这是解决这些路径的客户端,而不是服务器。客户忽略所有的重写。 – julp 2013-05-12 10:00:45