2013-06-24 2 views
1

Я хочу перенаправить параметры URL в новый файл. У меня есть страница, которая blog.php генерировать адреса из ссылок, как это: http://localhost/project-DEV/blog/category/link-url-here/.htaccess создает странный URL

Но когда я нажимаю на ссылку он предоставляет мне этот URL:

http://localhost/project-DEV/blog/blogs/blogs/blogs/blogs/blogs/blogs/blogs/blogs/blogs/blogs/blogs/blogs/blogs/blogs/blogs/blogs/blogs/blogs/blogs/blogs/uncategorized/hello-world/ 

Вот мой файл .htaccess в папке с блогами.

RewriteEngine On 
RewriteBase /project-DEV/blog 
RewriteRule ^(.*)/?$ http\:\/\/localhost\/project-DEV\/blog\/index.php?$1 [L] 

У меня есть файл blog/index.php в папке блога. Я хочу отправить этот category/link-url-here/ в мой файл index.php.

Возможно ли через .htaccess, как я пробовал? И почему этот код .htaccess не работает?

+0

Ваше создание кругового перенаправления, ваш путь перезаписи и правило имеют в них '/ project-DEV/blog' – DevZer0

+0

@ DevZer0, вы правы, это круговой, но не такая строка в обоих правилах не является причиной. – pjmorse

ответ

1

Попробуйте опуская http://localhost часть:

RewriteEngine On 
RewriteBase /project-DEV/blog 
RewriteRule ^(.*)/?$ /project-DEV/blog/index.php?$1 [L] 

Если это не помогает, вы можете добавить условие явно не переписать index.php, чтобы предотвратить цикл перезаписи:

RewriteCond %{REQUEST_URI} !^/project-DEV/blog/index.php$ 
1

потому, что ваш RewriteRule будет соответствовать почти каждому запросу, , включая те, которые уже были переписаны, он вызывается повторно. Вы должны переписать правило таким образом, чтобы оно не соответствовало запросам, которые уже включают ваш переписанный путь, возможно, с RewriteCond.

Также подумайте о том, чтобы читать When Not To Use Rewrite и использовать зажигалку, более быструю и менее запутанную. mod_redirect вместо mod_rewrite.