правильный способ использования mod_rewrite

0

Я следил за множеством вопросов, связанных с stackoverflow, и Googling. Но я не могу правильно переписать url. Вот простой пример моего сайта

root-|
     |__mydomain-|
                 |
                -|
                 |__cat1-|__.htaccess
                 |       |__index.php
                 |       |__single.php
                 |
                 |__.htaccess
                 |__index.php  // home-page

моя главная страница содержит ссылку меню: mysite.com/cat1
->, который правильно показывает "root/cat1/index.php ".

Вопрос 1:
Для любых других ссылок, содержащих cat1/post-id/title, мне нужно переписать url на single.php? Id = post-id

mysite.com/cat1/123/title  
   ->  should show single php with content of post with id:123

Что я написал в файле root/cat1/.htaccess

Options +FollowSymLinks
RewriteEngine on
<IfModule mod_rewrite.c>

RewriteBase /cat1/


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+?)/?$ single.php?id=$1 [L,QSA]

</IfModule>

я получаю ошибки, такие как

[Mon Nov 24 13:49:08.549284 2014] [:error] [pid 7144:tid 784] [client 127.0.0.1:21397]
script 'C:/wamp/www/single.php' not found or unable to stat
Теги:
.htaccess
mod-rewrite

1 ответ

1
Лучший ответ

Вы можете немного изменить свое правило внутри /cat1/.htaccess:

Options +FollowSymLinks
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /cat1/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(\d+)/(.+?)/?$ single.php?id=$1&title=$2 [L,QSA]

</IfModule>

Убедитесь, что это находится в /cat1/.htaccess

PS: Я добавил параметр title чтобы вы могли проверить правильность заголовка (если необходимо) внутри файла single.php.

  • 0
    Большое спасибо. но я все еще получаю Запрошенный URL /cat1/single.php не был найден на этом сервере. кажется, что он ищет этот файл в root / cat1 / single.php, а не в root / mydomain / cat1 / single.php, потому что когда я создаю простой файл по этому пути: root / cat1 / single.php, он обнаруживается !!
  • 0
    Я загрузил .htaccess на мой хост, и он работает там! но в моем местном у меня все еще есть проблема. Кажется, это проблема с сервером Wamp в моем локальном
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню