为什么这个RewriteRule会导致内部服务器错误?

时间:2009-12-21 17:15:29

标签: .htaccess mod-rewrite

我在本地以这种方式调用我的网站:

http://localhost:80/mysite/de/layer1/layer2/module

在.htaccess中我有:

RewriteEngine on

RewriteRule !^((css|js|images)/.*)$ index.php%{REQUEST_URI} [L, NE]

我尝试将其重写为:

http://localhost:80/mysite/index.php/de/layer1/layer2/module

知道那里有什么问题吗?

编辑:如果我只写这个,那就没有错误:

RewriteRule !^((css|js|images)/.*)$ index.php

但我想我需要这个%{REQUEST_URI}的东西!!

我的配置:Mac OS X 10.6 Snow Leopard,带有Apache,MySQL和PHP的MAMP 5.详细信息:

Apache 2.0.63
MySQL 5.1.37
PHP 4.4.9 & 5.2.10
APC 3.0.19 & APC 3.1.2
eAccelerator 0.9.5.3
XCache 1.2.2
phpMyAdmin 2.11.9.5 & phpMyAdmin 3.2.0.1
Zend Optimizer 3.3.3
SQLiteManager 1.2.0
Freetype 2.3.9
t1lib 5.1.2
curl 7.19.5
jpeg 7
libpng-1.2.38
gd 2.0.34
libxml 2.7.3
libxslt 1.1.24
gettext 0.17
libidn 1.15
iconv 1.13
mcrypt 2.5.8
YAZ 3.0.47 & PHP/YAZ 1.0.14

2 个答案:

答案 0 :(得分:2)

我不太确定你想要什么,但这里有一个重写规则,他将传递给index.php所有不是index.php的东西(以避免无限循环),/js/,{{1} }和/images/

/css/

对于您的服务器错误,它可以是RewriteCond %{REQUEST_URI} !^/(index.php|css|images|js)/.*$ RewriteRule ^(.*)$ http://%{HTTP_HOST}/index.php/$1 [L] 标志,可用于Apache版本> = 1.3.20

答案 1 :(得分:1)

这是Drupal用来完成类似任务的重写:

# Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]