Wordpress, .htaccess и mod_rewrite: как добавить правила перенаправления? - PullRequest
1 голос
/ 09 августа 2010

На данный момент у меня есть стандартная установка Wordpress 3.0, и файл .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>

Я хочу переписать URL-адреса, чтобы я мог предоставить некоторые автоматически сгенерированные страницы, нодержать его в рамках темы Wordpress.Например, переход к /event/123/ должен извлечь подробности для события # 123 из моей базы данных, без страницы, существующей в Wordpress.

Я думал, что смогу создать страницу "общего события" (например, /event/generic/) в Wordpress, и он принимает параметр, такой как:

RewriteRule ^event/(\d+)/$ /event/generic/?q=$1 [L]

Однако, это, похоже, не работает, просто возвращает меня на страницу Wordpress 404.Я думаю, что я мог бы спросить много Wordpress здесь, но, конечно, это возможно?

Единственное другое решение, о котором я подумал, это взломать 404.php внутри темы.

Обновление

Мой .htaccess выглядитнапример:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^eventtest/(\w+)/$ /events/event-single/ [L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Если я затем перейду к /eventtest/testing/, то:

$_SERVER['REQUEST_URI'] is /eventtest/testing/
$_SERVER['REDIRECT_URL'] is /events/event-single/

Страница /events/event-single/ существует в Wordpress, но если я перейду к /eventtest/testing/,Я получаю страницу 404.

Ответы [ 2 ]

2 голосов
/ 11 августа 2010

Нет необходимости даже прикасаться к вашему .htaccess - вы можете делать все, что захотите в самом WordPress!

Проверьте API для перезаписи и мой ответ на похожую тему .

0 голосов
/ 09 августа 2010

Это правило выглядит хорошо.Но убедитесь, что вы поместили это правило перед правилом «все-все» Wordpress, чтобы запрос переписывался до того, как он будет перехвачен последним правилом Wordpress.Так что попробуйте:

RewriteRule ^index\.php$ - [L]
RewriteRule ^event/(\d+)/$ /event/generic/?q=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...