Есть ли способ через htaccess изменить URL-адреса на чистые URL-адреса, удалив часть URL-адреса?

Все мои форматы URL-адресов выглядят следующим образом:

http://example.com/category?format=feed
http://example.com/category/sub_category/?format=feed

например: http://example.com/computer/cpu/?format=feed

Есть ли способ через htaccess изменить основные URL-адреса на эти:

http://example.com/category/feed
http://example.com/category/sub_category/feed

пример 1: http://example.com/computer/cpu/feed

пример 2: http://example.com/computer/feed


person user3307827    schedule 30.03.2014    source источник
comment
Да есть способ. См. длинный список справа для получения дополнительной информации --›   -  person PeeHaa    schedule 30.03.2014


Ответы (2)


Эти правила должны отвечать обоим требованиям. Но позволяет вам изменить категорию и подкатегорию, если обычные URL-адреса не меняются, а format всегда является ключом в строке запроса.

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/(.+)/(.+)$ /$1/$2/?format=$3 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/(.+)$ /$1/?format=$2 [L]

Затем вы сможете использовать эти типы URL.

http://example.com/category/feed
http://example.com/category/sub_category/feed
person Panama Jack    schedule 30.03.2014
comment
Спасибо за ответ... Чистый URL-адрес должен меняться только внутренне... верно? но не бывает так! - person user3307827; 30.03.2014
comment
Да, чистый URL-адрес, подобный этому http://example.com/category/feed, должен отображаться в адресной строке. Если вы использовали приведенный выше пример кода, он должен перенаправлять только внутренне. Этот [L] говорит ему прекратить обработку, когда он соответствует правилу. Убедитесь, что это все, что у вас есть. Не используйте R. - person Panama Jack; 30.03.2014

Следующее должно достичь того, что вы ищете:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{QUERY_STRING} ^format=(.*)$
RewriteRule ^(.*)/(.*)/$ /$1/$2/%1? [L,R]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{QUERY_STRING} ^format=(.*)$
RewriteRule ^(.*)$ /$1/%1? [L,R]

Вышеупомянутое превратится:

http://example.com/category?format=feed to http://example.com/category/feed

а также

http://example.com/category/sub_category/?format=feed to http://example.com/category/sub_category/feed

person Howli    schedule 30.03.2014