Почему этот RewriteRule вызывает внутреннюю ошибку сервера? - PullRequest
0 голосов
/ 21 декабря 2009

Я так называю свой сайт локально:

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, 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 ]

2 голосов
/ 21 декабря 2009

Я не совсем уверен, что вы хотите, но здесь правило переписывания, которое передаст 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

1 голос
/ 21 декабря 2009

Это переписывание, используемое 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]
...