Всем привет!
Вопрос следующий.
Проблема переадресации с помощью mod_rewrite.
имеется исходный url, например:
такой
http://www.example.com/index.php >хочется получить такой >
http://www.example.com/
или
http://www.example.com/index.php?page10 >хочется получить такой >
http://www.example.com/page10
или такой
http://www.example.com/index.php?xxx=yyyy&zzzz=wwww >хочется получить такой >
http://www.example.com/xxx/yyyy/zzzz/wwww
или на худой конец такие:
http://www.example.com#xxx#yyyy#zzzz#wwww
Попытки решения:
1.
RewriteEngine on
RewriteBase /
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1
преобразует
http://www.example.com/xxx=yyyy&zzzz=wwww
в
http://www.example.com/index.php?xxx=yyyy&zzzz=wwww
Просто убирает индексный файл и знак вопроса из URL.
2.
Второй способ не работает:
RewriteEngine on
RewriteBase /
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{REQUEST_URI} [A-Za-z0-9]*
RewriteRule ^([A-Za-z0-9]*)$ index.php?$1
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{REQUEST_URI} [A-Za-z0-9]*#[A-Za-z0-9]*
RewriteRule ^([A-Za-z0-9]*)#?([A-Za-z0-9]*)$ index.php?$1=$2
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{THE_REQUEST} [A-Za-z0-9]*#[A-Za-z0-9]*#[A-Za-z0-9]*
RewriteRule ^([A-Za-z0-9]*)#([A-Za-z0-9]*)#([A-Za-z0-9]*)$ index.php?$1=$2&$3
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{THE_REQUEST} [A-Za-z0-9]*#[A-Za-z0-9]*#[A-Za-z0-9]*#[A-Za-z0-9]*
RewriteRule ^([A-Za-z0-9]*)#?([A-Za-z0-9]*)#?([A-Za-z0-9]*)#?([A-Za-z0-9]*)$ index.php?$1=$2&$3=$4
Не совсем понятно как сравнивать RewriteCond почему в данном примере сравнение не работает
3. Были и другие эксперименты но пока радостного мало
==================================================================
Основные сложности в том, что длинна адреса может меняться т.е.
от
http://www.example.com/
до
http://www.example.com/index.php?xxx=yyyy&zzzz=wwww (
http://www.example.com/xxx/yyyy/zzzz/wwww)
и еще при использовании адресов типа
http://www.example.com/xxx/yyyy/zzzz/wwww
браузер запрашивает файлы (css, img ...) при указании относительного адреса с базой для URL
http://www.example.com/xxx/yyyy/zzzz/wwww соотвественно
http://www.example.com/xxx/yyyy/zzzz/
как лучше решить эту проблему в случае использования '/', можно использовать '#' но это не совсем то что надо.
Может знает стандартное решение данного вопроса. Буду благодарен, подскажите.
Благодарю за внимание!!!