#.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] используется только для того, чтобы убедиться, что обработка останавливается на этой директиве.