Правила перезаписи не работают в WordPress

25 нояб. 2013 г., 10:37:06
Просмотры: 22.7K
Голосов: 8

Я пытаюсь добавить новые правила перезаписи, используя API перезаписи:

add_rewrite_rule('product/([A-Z0-9]{10})', 'index.php/product/?asin=$1', 'bottom');
add_rewrite_rule('product/(([A-Za-z0-9_])*)', 'index.php/product/?product=$1', 'bottom');
add_rewrite_rule('compare/((([A-Z0-9]{10}),?)*)', 'index.php/compare/?asin=$1', 'bottom');
add_rewrite_rule('categories/(([A-Za-z0-9]|\-|\_)*)', 'index.php/categories/?subcategory=$1', 'bottom');

После обновления постоянных ссылок в файл .htaccess добавляются следующие строки:

RewriteRule ^product/([A-Z0-9]{10}) /index.php/product/?asin=$1 [QSA,L]
RewriteRule ^product/(([A-Za-z0-9_])*) /index.php/product/?product=$1 [QSA,L]
RewriteRule ^compare/((([A-Z0-9]{10}),?)*) /index.php/compare/?asin=$1 [QSA,L]
RewriteRule ^categories/(([A-Za-z0-9]|\-|\_)*) /index.php/categories/?subcategory=$1 [QSA,L]

что приводит к следующему содержимому файла .htaccess:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule ^product/([A-Z0-9]{10}) /index.php/product/?asin=$1 [QSA,L]
RewriteRule ^product/(([A-Za-z0-9_])*) /index.php/product/?product=$1 [QSA,L]
RewriteRule ^compare/((([A-Z0-9]{10}),?)*) /index.php/compare/?asin=$1 [QSA,L]
RewriteRule ^categories/(([A-Za-z0-9]|\-|\_)*) /index.php/categories/?subcategory=$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

Но когда я пытаюсь получить доступ к следующему URL:

http://example.com/product/ABCDE324AB

Похоже, что это не работает. Я всегда получаю страницу "не найдено". Есть какие-нибудь идеи?

3
Комментарии

это страница 404 WordPress или сервера?

Mark Kaplun Mark Kaplun
25 нояб. 2013 г. 13:10:55

После внесения изменений не забудьте перейти в Настройки > Постоянные ссылки и нажать Сохранить, чтобы сбросить правила перезаписи.

TomC TomC
25 нояб. 2013 г. 14:10:20

да, я уже сбрасывал правила перезаписи, используя постоянную ссылку 'Имя записи' и сохраняя, но всё равно не работает.

soul soul
26 нояб. 2013 г. 01:44:40
Все ответы на вопрос 1
7
11

Из вышеизложенного я понимаю, что у вас есть файл .htaccess с корректным кодом, но вы всё равно получаете ошибку 404. Позвольте объяснить, почему. Ваш сервер не разрешает чтение или переопределение прав в файле .htaccess. Как это исправить? Откройте файл Apache httpd.conf, найдите параметр AllowOverride (он встречается несколько раз). Проверьте следующий комментарий в этом же файле:

# AllowOverride определяет, какие директивы могут быть размещены в файлах .htaccess.
    # Может принимать значения "All", "None" или любую комбинацию ключевых слов:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride None

Просто замените AllowOverride None на AllowOverride All.

Теперь перезапустите APACHE, и всё должно заработать.

25 нояб. 2013 г. 14:02:21
Комментарии

Это также может вам помочь: http://httpd.apache.org/docs/current/mod/core.html#allowoverride

Manish Manish
25 нояб. 2013 г. 14:04:33

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

soul soul
26 нояб. 2013 г. 09:43:56

Хорошо, сделайте следующее. Создайте резервную копию вашего файла htaccess, удалите весь код и добавьте стандартный код htaccess в этот файл. Затем перейдите на страницу постоянных ссылок и выберите стандартные постоянные ссылки. После этого откройте сайт - я уверен, сайт заработает. Затем попробуйте с другими настройками постоянных ссылок.

Manish Manish
26 нояб. 2013 г. 19:05:16

это тоже не работает

soul soul
18 дек. 2013 г. 05:12:43

Ты имеешь в виду, что не можешь получить доступ к сайту с обычными постоянными ссылками?

Manish Manish
18 дек. 2013 г. 07:55:01

обычные постоянные ссылки работают, когда я ввожу что-то вроде site.com?page_id=7, но пользовательские правила перезаписи, которые я добавил, всё равно не работают. Это не будет работать, если я просто использую обычные постоянные ссылки, но если я использую постоянные ссылки с названием записи, это тоже не работает

soul soul
18 дек. 2013 г. 09:50:19

какой плагин вы используете для перезаписи правил?

Manish Manish
18 дек. 2013 г. 16:20:53
Показать остальные 2 комментариев