У нас есть правило перезаписи, которое работает нормально, но причина, по которой мы переписываем, заключается в том, что целевой URL не такой аккуратный.
foo.com/bar -> foo.com/some/really/long/address
Я бы хотел сохранить foo.com/bar
URL-адрес в браузере, но показать foo.com/some/really/long/address
страница. Это возможно?
mod_rewrite то, что вам нужно.
Это довольно простой и мощный инструмент.
Предлагаю прочитать это -> http://httpd.apache.org/docs/2.0/misc/rewriteguide.html
И пример:
это запускает механизм перезаписи, затем применяет некоторые условия и, если они верны, применяет саму перезапись. это как кодовый блок while / case.
Самая полезная часть - это журнал.;)
RewriteEngine on
RewriteLogLevel 0
RewriteLog "/var/www/rewrite.log"
<Directory /var/www>
Options -ExecCGI -Indexes
AllowOverride none
Order allow,deny
allow from all
#SetHandler none
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(\w+.\w+)/(es|ca|en)/$ index.php?user=$1&lang=$2 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(\w+.\w+)/$ index.php?user=$1&lang= [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(\w+.\w+)/(\w+)?(/(.*))?$ index.php?user=$1&lang=$2$4 [L,QSA]
Кроме того, вы можете посмотреть на mod_proxy, он поможет, но, на мой взгляд, это не «хороший способ».
Надеюсь, поможет.