Проблема с файлом htaccess. Плагин Wordpress говорит мне, что есть один, я не могу найти один? - PullRequest
0 голосов
/ 16 июля 2010

У меня действительно необычная проблема, которой у меня никогда не было. У меня нет файла .htaccess на моем сервере. посмотрел везде, там просто нет файла, но плагин Wordpress (AskApacheRewriteRules) говорит мне, что следующие правила активны:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Любая идея, почему это может быть, я уже написал своему хостинг-провайдеру, но их сервис не самый лучший.

, даже если я создаю файл htaccess с другими правилами и сохраняю его в корневой каталог сервера, это ничего не меняет. Плагин всегда говорит мне то же самое, и я верю плагину, потому что у меня есть проблемы с /index.php/ в моем URL (который я не хочу иметь).

есть идеи?

Ответы [ 2 ]

1 голос
/ 16 июля 2010

На странице параметров AskApacheRewriteRules вы убедились, что для using_index_permalinks установлено значение false, а для using_mod_rewrite_permalinks установлено значение true? Если это не так, WordPress попытается использовать PATH_INFO для ваших постоянных ссылок, в результате чего /index.php/(permalink_structure).

Обратите внимание, что класс переписывания WordPress хранит свои правила перезаписи как параметр WordPress в базе данных, откуда AskApacheRewriteRules получает информацию. Плагин также, по-видимому, форматирует правила с помощью функции mod_rewrite_rules, а затем выводит их на страницу, которая окружает их:

<IfModule mod_rewrite.c>
...
</IfModule>

Итак, вероятная причина, по которой вы не можете найти файл .htaccess, заключается в том, что он не существует; правила просто присутствуют в базе данных. Причина, по которой правила присутствуют в базе данных, заключается в том, что вы используете постоянные ссылки, а это автоматически сгенерированный набор правил WordPress, который сохраняется независимо от того, используется он на самом деле или нет.

Редактировать: Вы должны иметь файл .htaccess в корне вашего веб-каталога со следующим содержимым:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</IfModule>

<IfModule !mod_rewrite.c>
    # If mod_rewrite isn't available, we'll do this a hackish (and bad) way...
    ErrorDocument 404 /index.php
</IfModule>

Параметр rewrite_rules хранится в SELECT option_value FROM wp_options WHERE option_name = 'rewrite_rules', но восстанавливается каждый раз, когда вы меняете постоянную ссылку, и не используется, кроме записи в .htaccess, как я могу сказать.

В любом случае, это определенно правильные правила для того, что вы хотите сделать. Вы уверены, что на вашем хосте включен mod_rewrite?

Edit:

Давайте на 100% убедимся, что mod_rewrite работает правильно, и пойдем оттуда.

Создайте файл .htaccess в корневом веб-каталоге со следующими правилами, в точности как написано:

RewriteEngine On
RewriteRule ^rwtest http://stackoverflow.com/ [R,L]

Затем перейдите на свой сайт с URL example.com/rwtest и посмотрите, не перенаправлены ли вы в StackOverflow. Если нет, то что-то не так с mod_rewrite. Если вы это сделаете, то, по крайней мере, мы знаем, что это не проблема.

0 голосов
/ 16 июля 2010

Вы проверили, определено ли это в вашем файле конфигурации apache (кажется, что плагин показывает выдержку из этого).

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