2014-01-28 3 views
0

Я был назначен на новый веб-сайт, и мне нужно, чтобы включить маршрутизацию страницы и «тщеславия URL» с .htaccess.htaccess переписывает для конкретных каталогов

Я действительно не знаком с Htaccess, и, несмотря на все мои исследовательских усилий, я не получил твердых ответов.

Веб-сайт имеет встроенную административную систему PHP, расположенную в подкаталоге под названием «admin». Я вообще не хочу с ним связываться, поэтому любые изменения, внесенные мной в htaccess, не могут повлиять на этот подкаталог.

Итак, учитывая, что страница имеет 3 основных «страницы»: дома, покупайте и продавайте, мне нужны запросы, сделанные на «www.sitename.com» и «www.sitename.com/index.php», чтобы проложить маршрут на домашнюю страницу. Мне нужны запросы, сделанные на «www.sitename.com/sell», чтобы перейти на страницу продажи.

И вот самая сложная часть, мне нужны запросы, сделанные на «www.sitename.com/buy», чтобы перейти на «buy.php», но запросы, сделанные на «www.sitename.com/buy/category-name», для перехода на «www.sitename.com/buy.php?c=12»

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

ответ

0

Попробуйте это:

RewriteEngine On 

RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 

RewriteRule ^sell$ ./sell.php 
RewriteRule ^buy$ ./buy.php 
RewriteRule ^buy/(.*)$ ./buy.php?c=$1 

Если категория всегда числовой заменить (.*) с (\d+)

+0

Это работает, если я иду/купить/продать или или/индекс, и т.д ... Тем не менее, если я иду/buy/category-name Я получаю ошибку сервера 500. Даже если я пойду купить/3, я все равно получаю внутреннюю ошибку сервера ... – user1621945

+0

Вы уверены, что ошибка 500 вызвана htaccess, а не скриптом PHP? Пожалуйста, укажите связанные строки с вашего apache error.log – ManiacTwister

1

Эти правила должны работать для вас:

RewriteEngine On 
RewriteBase/

# skip admin OR any valid file/dir 
RewriteCond %{REQUEST_FILENAME} -d [OR] 
RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_URI} /admin/ [NC] 
RewriteRule^- [L] 

RewriteRule ^(sell|buy)/?$ $1.php [NC,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(buy)/([^/]+)/?$ $1.php?c=$2 [L,NC,QSA] 
+0

Это работает, если я иду/покупаю или продаю или/индекс и т. Д. Однако, если я перехожу в/buy/category-name, я получаю ошибку сервера 500. Даже если я пойду купить/3, я все равно получаю внутреннюю ошибку сервера ... – user1621945

+0

Я ошибся, исправил ее сейчас. Пожалуйста, попробуйте еще раз. – anubhava

0

Я думаю, эта надежда /* скопируйте и вставьте ниже, сохраните имя. Htaccess */

RewriteEngine On 
RewriteBase /yousite.com/ 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME}.php -f 
#ex1:http://yousite.com/buy/3 
RewriteRule ([a-zA-Z_-]+)/([0-9]?) buy.php?c=$1 

/* и в файл PHP */

<!-- #ex1:http://yousite.com/buy/3 --> 
<a href="<?php echo "buy/3" ?>">buy/3</a> 
+0

Это работает, если я иду/покупаю или продаю или/индекс и т. Д. Однако, если я перехожу в/buy/category-name, я получаю ошибку сервера 500. Даже если я пойду купить/3, я все равно получаю внутреннюю ошибку сервера ... – user1621945

+0

www.sitename.com/buy/3 используется только в двух условиях ... www.sitename.com/abjad/number ... если вы хотите получить www.sitename.com/buy/kategory, то пришлось добавить еще один RewriteRule ([a-zA-Z_-] +)/([a-zA-Z_-] +) buy.php? kategory = $ 1 –

Смежные вопросы