Несколько правил перезаписи в .htaccess для перенаправления на нужные страницы - PullRequest
1 голос
/ 09 января 2012

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

http://www.sitename.com/url-slug

Также, когда пользователь нажимает на каталог, он должен перенаправлять что-то вроде этого

http://www.sitename.com/category/category-slug

Аналогично, при нажатии на наборы пользователи, страницы, которые он должен перенаправлять соответственно, как

http://www.sitename.com/sets/set-slug

http://www.sitename.com/user/user-full-name
http://www.sitename.com/page/page-slug

Ниже приведен код, который я использую в .htaccess, который, я уверен, неверен

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule (.*)$ ./single.php?id=$1 
RewriteRule ^category/(.*)/ category.php?id=$1 [L]


Options +FollowSymLinks
RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteRule ^(.*)index.php$ http://www.sitename.com/$1 [R=301,L]

Может ли кто-нибудь направить меня туда, куда я идунеправильно, мне нужно, чтобы эти страницы вызывали свои соответствующие страницы, например: single.php, category.php, sets.php, users.php и page.php соответственно для получения и отображения данных.Я новичок в .htaccess, поэтому любая помощь приветствуется.

1 Ответ

9 голосов
/ 09 января 2012

Я предполагаю, что у вас нет других правил в вашем .htaccess, расположенном в корневом каталоге вашего сайта

RewriteEngine on
RewriteBase /

#if for an existing directory or file
RewriteCond %{SCRIPT_FILENAME} -d
RewriteCond %{SCRIPT_FILENAME} -f
#then do nothing
RewriteRule . - [L]

#otherwise
#if it is for a slug (assuming alphanumeric and dashes), send to single
RewriteRule ^([-a-zA-Z0-9]+)/?$ single.php?id=$1 [L]

#if a category 
RewriteRule ^category/([-a-zA-Z0-9]+)/?$ category.php?id=$1 [L,NC]

#if a sets
RewriteRule ^sets/([-a-zA-Z0-9]+)/?$ sets.php?id=$1 [L,NC]

#if a sets
RewriteRule ^user/([-a-zA-Z0-9]+)/?$ users.php?id=$1 [L,NC]

#if a page
RewriteRule ^page/([-a-zA-Z0-9]+)/?$ page.php?id=$1 [L,NC]
...