2009-12-21 147 views
0

我打电话给我的网站在本地是这样的:为什么这个RewriteRule会导致内部服务器错误?

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雪豹,MAMP与Apache,MySQL和PHP 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

http://serverfault.com可能更适合 – 2009-12-21 17:24:19

+0

这是真实的;这不是一个编程问题。 – kiamlaluno 2009-12-21 17:28:13

回答

2

我不是很确定你想要什么,但是这里有一个重写规则,它将传递给index.php所有不是index.php(以避免无限循环),/js/,/images//css/

RewriteCond %{REQUEST_URI} !^/(index.php|css|images|js)/.*$ 
RewriteRule ^(.*)$ http://%{HTTP_HOST}/index.php/$1 [L] 

对于服务器错误也可以是NE标志谁是供Apache的版本> = 1.3.20

+0

我删除了^^/(index.php | css | images | js)/.*$中导致无限循环的^。从apache错误日志:“mod_rewrite:达到最大内部重定向数目,假设配置错误。”我必须补充说,我的网站被调用到localhost:80/mysite /,所以mysite实际上是根,而不是localhost:80。坏事。我知道。必须为此设置一个本地主机名。 – openfrog 2009-12-21 18:54:25

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] 
相关问题