Перепишите URL, используя .htaccess, чтобы сократить ссылку - PullRequest
2 голосов
/ 25 февраля 2012

Я надеюсь, что смогу взять URL

www.mydomain.com/profile.php?user=THEUSERNAME

и превратить его в

www.mydomain.com/THEUSERNAME

Почти как Twitter.

Я тоже хочу бытьв состоянии иметь его, где я могу перейти к

www.mydomain.com/THEUSERNAME

, и он перейдет на страницу пользователя, не меняя URL обратно на длинный URL.Я не знаю, как это сделать, и я также не знаю, потребует ли он .htaccess, PHP или, возможно, и то, и другое.Пожалуйста, помогите.


РЕШЕНИЕ НАЙДЕНО


Внутри вашего файла .htaccess:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/\.]+)/?$ profile.php?user=$1 [L]

Также вам нужно будет дать абсолютный URL-адрес для всех ваших файлов CSS и JS.Например, вместо src = "css / main.css" вы должны поставить src = "http://yourdomain.com/css/main.css".. Причина в том, что если ваш URL имеет обратную косую черту (т. Е. yourdomain.com / USERNAME / * 1025)*) чем он будет думать, что находится в следующем каталоге, и это вызовет конфликт. Absolute решает проблемы CSS и JS.

В profile.php:

НЕ ЭТО:

   <link href="css/allpage.css" rel="stylesheet" type="text/css" />

ЭТО:

   <link href="http://yourdomain.com/css/allpage.css" rel="stylesheet" type="text/css" />

Ответы [ 2 ]

2 голосов
/ 25 февраля 2012
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ /profile.php?name=$1 [L]

Это сработает, http://yoursite.com/username (с косой чертой или без нее) перезапишется в http://yoursite.com/profile.php?user=username

Также вы должны использовать файлы / based (для <script> и * 1008)*) или полные URL, если нет, вы можете получить около 404 ошибок.Я также предлагаю вам добавить CDN, и вы можете нажать эту ссылку через CDN, одна очень хорошая вещь - maxCDN - 40USD первый TERABYTE!.

Удачи!

1 голос
/ 25 февраля 2012

попробуйте

RewriteEngine on
# we're working the document root
RewriteBase /
# make sure requested item is not a file
RewriteCond %{REQUEST_FILENAME} !-f
# re-route everything that may be a username slug to the profile
RewriteRule ^([^/]+)/?$ /profile.php?name=$1 [L]
...