У меня есть этот сайт. Давайте назовем это 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
, даже переписать строку двигателя. Я не пытался удалить условия, потому что я не думаю, что должен, вероятно, я ошибаюсь.