.htaccess: разбиение на страницы перезаписи URL - PullRequest
0 голосов
/ 03 января 2012

Это работает:

RewriteRule ^newest/?$ index.php?type=newest

Это не работает:

RewriteRule ^newest/(\d+)*/?$ ./index.php?type=newest&p=$1

Остальные мои переписывают:

IndexIgnore *
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f

Это работает на моемlocalhost работает xampp, но он не работает на моем веб-хосте.В чем может быть проблема, прежде чем я свяжусь с ними?

Ответы [ 3 ]

1 голос
/ 03 января 2012

Несколько вещей, которые нужно проверить ...

Возможно, вам потребуется включить htaccess в вашем конфигурационном файле apache (httpd.conf), раскомментировав следующее:

;LoadModule rewrite_module modules/mod_rewrite.so

Попробуйте убедиться, что запись каталога в httpd.conf для вашего сервера не содержит

AllowOverride None

, поскольку это предотвратит использование файла .htaccess в отдельном каталоге. Это должно выглядеть примерно так (обратите внимание на AllowOverride All ):

<Directory /var/www/www.mysite.com>
    Options FollowSymLinks
    AllowOverride All
    Order deny,allow
    Deny from all
    Satisfy all
</Directory>

Также в httpd.conf убедитесь, что .htaccess - это имя, которое apache ожидает от файлов доступа. Директива AccessFileName может указывать это значение. Например:

<virtualhost>
    ServerName www.mysite.com
    DirectoryRoot /var/www/www.mysite.com
    AccessFileName .customhtaccess
</virtualhost>

Если директива AccessFileName установлена ​​на что-то другое, файл .htaccess не будет анализироваться.

0 голосов
/ 04 января 2012

Почему бы вам не использовать более эффективный способ сделать это. Я рекомендую использовать этот шаблон:

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1

Чтобы перенаправить все запросы в ваш индексный файл, вы можете проанализировать URL и сделать то, что вам нужно. Это не исправление для вашего вопроса, но альтернативный способ избежать вашей работы.

0 голосов
/ 03 января 2012

Каково ваше намерение с этим правилом

RewriteRule ^ newest / (\ d +) * /? $ ./Index.php?type=newest&p=$1

Если он соответствует 0 или более цифрам, он должен быть

RewriteRule ^ newest / (\ d) * /? $ Index.php? Type = newest & p = $ 1 [NC, L]

Если оно соответствует 1 или более цифрам, оно должно быть

RewriteRule ^ newest / (\ d) + /? $ Index.php? Type = newest & p = $ 1 [NC, L]

...