htaccess — получение содержимого по одному URL-адресу с другого url

#.htaccess #url-rewriting

#.htaccess #перезапись url

Вопрос:

Есть ли возможность получить содержимое по одному URL-адресу с другого URL? вот так:

test.com/dir1 показывает содержимое из запроса test.com/getinfo/index.php?q=dir1

или

test.com/dir2 показывает содержимое из запроса test.com/getinfo.php?q=dir2

Мне это нужно, потому что я должен выполнить 50 URL-адресов, таких как test.com/dir1 ../dir50, который имеет тот же шаблон, но с некоторым другим содержимым, основанным на запросе, и один виртуальный URL с запросом лучше, чем 50 реальных каталогов.

Я пытался сделать, но не смог! Заранее спасибо!

Ответ №1:

Если все это находится на одном хосте, тогда взгляните на mod_rewrite, который может делать удивительные вещи. Просто убедитесь, что вы дочитали руководство до конца, так как там много деталей, которые нужно усвоить.

 RewriteEngine On
RewriteRule ^/dir1$ /getinfo/index.php?q=dir1 [L]
  

или в более общем виде:

 RewriteEngine On
RewriteRule ^/dir(.*)$ /getinfo/index.php?q=dir$1 [L]
  

Комментарии:

1. Спасибо! RewriteEngine на базе перезаписи / RewriteRule ^dir1$ getinfo/index.php?q=dir1 [R=301,L]

2. Спасибо! Это работает только с Redirect=301 RewriteEngine на RewriteRule ^dir1$ getinfo/index.php?q=dir1 [R=301,L] Но вопросы были — Есть ли возможность получить содержимое по одному URL с другого URL без перенаправления на новый url?: если я введу test.com/dir1 url должен быть таким же, без перенаправления на getinfo / index.php?q= dir1, но информация должна быть такой, которая дает getinfo / index.php?q= dir1 извините за мой английский 🙂

3. Если вы добавите [R =301], вы получите внешнее перенаправление (HTTP 301). Если вы удалите это, вы получите внутреннее перенаправление (только содержимое с перенаправленного URL). [L] используется только для того, чтобы убедиться, что обработка останавливается на этой директиве.