2014-11-24 3 views
0

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

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

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

Question1:
Для любых других связей, которая содержит cat1/пост-ID/название мне нужно переписать URL в single.php идентификатор = пост-ид

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

Что я написал? в корне/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 

ответ

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 ** появляется! – osyan

+0

Я загрузил '.htaccess' на мой хост, и он работает там! но в моем локальном я все еще имею проблему. кажется, что-то проблема с wamp-сервером в моем локальном – osyan

+1

Хорошо, поэтому проблема заключается в том, что эта дополнительная папка '/ mydomain /' на вашем локальном хосте, которой нет на реальном сервере. На localhost используйте строку 'RewriteBase' как' RewriteBase/mydomain/cat1/' – anubhava

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