Mod_rewrite работает на локальной, а не на удаленной версии? - PullRequest
0 голосов
/ 06 марта 2011

У меня есть этот сайт. Давайте назовем это htp: //www.mysite.com

У меня есть правило переписать, чтобы изменить htp://www.mysite.com/?q=words%20etc/0/10 на http://www.mysite.com/words%20etc/0/10 (или http://www.mysite.com//0/10 или http://www.mysite.com/0/10)

.htaccess:ErrorDocument 404 htp://www.mysite.com/404.html
options +FollowSymlinks
rewriteEngine on
rewriteCond %{REQUEST_URI} !-f
rewriteCond %{REQUEST_URI} !-d
rewriteCond %{REQUEST_URI} !index\.php
rewriteRule ^/?([^/]+?)?/?([0-9]+?)/([0-9]+?)$ index.php/%{THE_REQUEST} [NC] 

Теперь, это работает на моем локальном сервере apache 2.2.11, без ошибок. Однако на сервере Apache 1.3.41 моего хоста я получаю следующую ошибку:

[Sat Mar 5 21:42:14 2011] [alert] [client [ip]] /home/_/public_html/mysite.com/.htaccess: RewriteRule: cannot compile regular expression '^/?([^/]+?)?/?([0-9]+?)/([0-9]+?)$'\n 

Я полагаю, что в версии apache есть что-то странное, так как другие сайты на этом хосте используют mod_rewrite без проблем.

Я попытался удалить строку +followSymlinks, даже переписать строку двигателя. Я не пытался удалить условия, потому что я не думаю, что должен, вероятно, я ошибаюсь.

1 Ответ

0 голосов
/ 09 марта 2011

Ответ здесь: http://www.webmasterworld.com/apache/4277342.htm

Я пользуюсь? в основном неправильно. Выложу решение, когда оно заработает.

ErrorDocument 404 /404.html
options +FollowSymlinks
rewriteEngine on
rewriteCond %{REQUEST_URI} !-f
rewriteCond %{REQUEST_URI} !-d
rewriteCond %{REQUEST_URI} !/index\.php
rewriteRule ^/?([^/]+)/([0-9]+)/([0-9]+)$ index.php?q=$1&s=$2&p=$3 [NC]
rewriteRule ^/?([0-9]+)/([0-9]+)$ index.php?q=&s=$1&p=$2 [NC]

fixeddddd.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...