.htaccess重写网址[帮助规则]

时间:2009-07-10 21:21:29

标签: apache drupal .htaccess mod-rewrite

我正在尝试重写一个这样的网址: http://www.foo.com/bar/baz

的index.php Q = $ 1和; d =巴兹

其中bar不是固定值,但是baz是。

  RewriteRule ^(.*)\/baz$ index.php?q=$1&d=baz [L,QSA]
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

我上面的有点有效,但遗憾的是打破了网站中的所有内容(css / javascript),但奇怪的是所有页面都有效:/

这是一个drupal安装,(所以第二行需要保留)。

更新

实际上这可能有所帮助,我忘了包含

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  **RewriteRule ^(.*)/details index.php?q=$1&details=true [L,QSA]**
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

它似乎正在正确地进行重写,唯一的问题是它现在忽略了其他条件语句,即它仍然试图重写存在的文件(即css,js),以避免它们。

网站很好没有我的线(带星星的那个),但有了它,变量和页面工作,但像css等静态文件也被重写....需要停止!

提前致谢。

沙迪

2 个答案:

答案 0 :(得分:1)

条件仅适用于紧随其后的第一条规则。所以尝试复制条件行。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/details index.php?q=$1&details=true [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

答案 1 :(得分:0)

  RewriteRule ^(.*)/details index.php?q=$1&details=true [L,QSA]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

这是最终奏效的。它只需要重新安排规则......