Я создаю небольшой локальный сайт социального хорошего сообщества, где у каждого проекта есть свой собственный URL, так что когда username = 'foo', URL становится http://website.com/foo похожим на Twitter. Несмотря на то, что у меня нет опыта работы с htaccess, мне удалось заставить его работать в значительной степени. Однако сейчас я сталкиваюсь с проблемами, когда кто-то печатает http://website.com/subdomain/foo. Теперь он также пытается найти имя пользователя и отобразить страницу, но я не хочу, чтобы это работало, и хочу показать им нашу страницу 404.
Кроме того, на некоторых поддоменах (т.е. около) у нас есть другие страницы, такие как «ourstory.php». Я действительно хотел бы отображать «about / ourstory» вместо about / ourstory.php, но только для выбранных поддоменов.
Наконец, при наличии структуры 'website.com/subdomain/subdomain' он генерирует внутренние ошибки сервера, когда требуются другие файлы php, даже если используются абсолютные пути.
Вот мой текущий mod_rewrite, надеюсь, вы понимаете, что я пытаюсь сделать, и не стесняйтесь оптимизировать, я, вероятно, допустил некоторые ошибки для начинающих.
Этот мод переписывает три вещи:
1. Удалите «www» перед адресом;
2. Второй проверяет, что, когда они просто набирают домашнюю страницу, они переносят их на домашнюю страницу (удаление этого приведет к пустой домашней странице по какой-то причине, может ли это быть сделано по-другому?);
3. Когда вводится имя, которое не является поддоменом, оно перенаправляет их на страницу профиля и делает URL-адрес именем пользователя.
<IfModule mod_rewrite.c>
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)/$ http://website.com/$1 [R=301,L]
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\.(css|gif|ico|jpg|js|png|swf|txt)$
RewriteRule ^(.{5,16})$ profile.php?scrname=$1
RewriteRule ^(.+)(\.php|\.html)/$ /$1$2 [R=301,L]
</IfModule>
Опять же, любая помощь будет принята с благодарностью.