2013-02-20 4 views
1

я есть сценарий в index.php во ВСЕХHtaccess SEO Friendly URLs для всех подпапок

нужно сделать довольно URL/SEO Friendly URLs как это: site.com/folder1/ something.html

теперь у меня есть некрасивых URLs, как это: site.com/folder1/ index.php?category=something

эта часть index.php?category=something всегда одинакова во всех вложенных папках, я просто хочу, чтобы изменить его на более сео дружественный как something.html

раз в усиления: найти index.php?category=1$ и заменить его 1$.html делать что-нибудь еще, только эта часть URL

так не трогать, когда я посещаю:

site.com/another-subfolder/and-one-more-folder-here/index.php?category=something 

должны увидеть это в адресной строке:

site.com/another-subfolder/and-one-more-folder-here/something.html 

Надеюсь, вы поняли?

я попытался это с folder1 в HTAccess в корне

RewriteRule ^folder1/(.*).html$ folder1/index.php?category=$1 [L,R=301] 

хорошо это работает, но как я могу сделать эту работу для всех вложенных папок accross сайта, как это:

site.com/folder145/index.php?category=something 
site.com/subfolder/index.php?category=something 
site.com/another-subfolder/and-one-more-folder-here/index.php?category=something 

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

любая помощь с благодарностью

ответ

0

Прежде всего, вам необходимо изменить все ссылки, которые вы создаете из формы index.php?category=, на форму category.html.

Затем в файле Htaccess в корневом каталоге, вы добавляете эти правила, чтобы внутренне переписать category.html формы обратно в index.php?category= формы:

RewriteEngine On 

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

Затем, чтобы указать ссылки, которые вы не имеете никакого контроля над (или те, генерируемые с помощью формы) извне перенаправить любой прямой доступ к ссылкам в форме index.php?category=:

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ (/.*?)?/index\.php\?category=([^&\ ]+) 
RewriteRule ^(.+?/)?index\.php$ /$1%3.html? [L,R=301] 

Это должно соответствовать любой и каждый подкаталог.

+0

yessssssss наконец-то работает, большое спасибо вам, я пытался решить эту тайну последние несколько дней, но я не мог этого сделать, вы мой спаситель :) это работает точно так, как я описал !!! еще раз спасибо :) – Sunny