правило перезаписи для постоянных ссылок WordPress 3.3 не работает - PullRequest
1 голос
/ 22 декабря 2011

Каждый раз, когда обновление до WordPress 3.3 URL-адреса не перенаправляются, как следует.Изменено: domain.com / 2010/10 / postname / на: domain.com / postname /

    RewriteEngine On
    RewriteBase /

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^/[0-9]{4}/[0-9]{2}/(.+)$ /$1 [NC,R=301,L]

Ответы [ 3 ]

1 голос
/ 23 декабря 2011

Проблема возникла из-за лидирующего слеша и не использовала $ 3

    RewriteEngine On
    RewriteBase /

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([0-9]{4})/([0-9]{1,2})/(.+)$ /$3 [NC,R=301,L]
1 голос
/ 23 декабря 2011

Здесь есть скрипт, который вы можете использовать для генерации правил .htaccess, если вы хотите изменить постоянные ссылки на /% postname% / structure.

http://yoast.com/change-wordpress-permalink-structure/

Мои постоянные ссылки были точно такими же, как и у вас, я использовал этот инструмент, чтобы изменить их, и он работает хорошо.

0 голосов
/ 22 декабря 2011

Последнее правило никогда не будет применено, если предыдущее правило совпадает.Предполагая, что запрос http://domain.com/2010/10/postname/ не соответствует файлу или каталогу, RewriteRule . /index.php [L] перезапишет URI в /index.php, таким образом, он никогда не доберется до вашего правила.Попробуйте переместить правило вверх, чуть ниже RewriteBase /, и продублируйте условия! -F /! - d, чтобы оно выглядело так:

RewriteBase /

# for 301 redirect    
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/[0-9]{4}/[0-9]{2}/(.+)$ /$1 [NC,R=301,L]

# the rest of the rules
RewriteRule ^atom.xml$ feed/ [NC,R=301,L]
RewriteRule ^rss.xml$ feed/ [NC,R=301,L]
RewriteRule ^rss2.xml$ feed/ [NC,R=301,L]
RewriteCond %{HTTP_USER_AGENT} !FeedBurner  [NC]
RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
RewriteRule ^feed/?([_0-9a-z-]+)?/?$ http://feeds.feedburner.com/handle [R=302,NC,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Кроме того, если это вФайл .htaccess, вам нужно удалить начальный слеш в совпадении правил, чтобы он выглядел так: ^[0-9]{4}/[0-9]{2}/(.+)$

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