#.htaccess
#.htaccess
Вопрос:
Мои приветствия всем.
У меня проблема, для которой я ищу решение. У меня есть my-website.com сайт и каждый пользователь, который регистрируется на моем сайте, получает персональную ссылку: USERNAME.my-website.com .
Между тем, у меня было следующее правило в моем htaccess :
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.*).my-website.com [NC]
RewriteRule (.*) process.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) index.php/$1 [L]
Как сделать все поддомены ( USERNAME.my-website.com ) указать на process.php ( process.php/USERNAME ) файл и что другие URL-адреса, такие как my-website.com/OTHER указать на index.php/USERNAME ? ( в случае, если OTHER не является файлом или папкой моего сайта)
Вот что я сделал, но это не работает.
Комментарии:
1. Ну, вам нужно одно правило перезаписи, когда вы обнаруживаете поддомен, и одно правило перезаписи, указывающее на индексный файл, когда запрошенный путь не разрешен для физического файла или папки. Ничего особенного, ничего удивительного. Итак, в чем ваш актуальный вопрос?
2. Спасибо за ваш ответ. Я хотел бы перенаправить все поддомены на process.php файл и другие URL-адреса к index.php досье.
3. Конечно, мы понимаем это из вашего вопроса. Пожалуйста, обратите внимание, что существует много существующих ответов на такие похожие вопросы. Который вы можете использовать, чтобы начать реализацию собственного решения. SO не является бесплатным сервисом для написания кода. Мы здесь, чтобы предложить помощь в решении конкретных проблем, когда у вас есть детали, с которыми вы не можете разобраться самостоятельно. Но мы ожидаем, что вы начнете сами, что вы попытаетесь реализовать свое собственное решение. Итак, почему вы не можете реализовать два правила перезаписи, учитывая, что вы уже реализовали одно?
4. Я просто изменил свой вопрос. с дополнительной информацией. Пожалуйста, взгляните.
Ответ №1:
«Но это не работает» звучит немного расплывчато, поэтому все, что мы можем сделать, это дать несколько общих советов и предложений…
Сначала вам нужно убедиться, что эти поддомены действительно обслуживаются вашим http-сервером. Вы ничего не написали ни об этом, ни о том, как вы размещаете свой сайт вообще.
Также вы, очевидно, должны позаботиться о том, чтобы распределенные файлы конфигурации («.htaccess») вообще рассматривались вашим http-сервером, что также не ясно из вашего вопроса.
Учитывая оба этих аспекта, вам действительно придется сосредоточиться на ваших правилах перезаписи. Вот вариант вашей собственной реализации с несколькими изменениями:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/process.php$
RewriteCond %{HTTP_HOST} ^(.*).my-website.com [NC]
RewriteRule ^ /process.php/%1 [QSA,END]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/index.php/?
RewriteRule ^/?(.*)$ /index.php/$1 [QSA,END]
Вероятно, вам придется внести еще несколько изменений. Но, основываясь на расплывчатой информации, которую вы предоставили, трудно быть более конкретным.
Хороший способ начать отладку проблем с перезаписью — включить ведение журнала перезаписи на вашем http-сервере. Это позволяет внимательно следить за тем, что на самом деле происходит внутри вашего механизма перезаписи. Пожалуйста, ознакомьтесь с документацией об этом: https://httpd.apache.org/docs/current/mod/mod_rewrite.html