Назад | Перейти на главную страницу

Могу ли я переписать URL без перенаправления на Apache2?

У нас есть правило перезаписи, которое работает нормально, но причина, по которой мы переписываем, заключается в том, что целевой 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, он поможет, но, на мой взгляд, это не «хороший способ».

Надеюсь, поможет.