Использование .htaccess, чтобы переписать простой URL - PullRequest
3 голосов
/ 26 марта 2012

У меня есть такой URL-адрес - www.example.com/blog.php/username, он перенесет вас на страницу блога с именем пользователя, но я хочу использовать такой URL-адрес вместо этого - www.example.com/blog / имя пользователя, чтобы попасть в тот же файл (blog.php). Пожалуйста, какие шаги мне нужно предпринять, чтобы достичь этого? Спасибо за любую помощь.

Ответы [ 4 ]

4 голосов
/ 26 марта 2012

Создайте в своей корневой директории файл с именем .htaccess и добавьте в него:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule     ^blog/(.*)$     yourpage.php?username=$1 [L]
</IfModule>

(. *) Будет принимать любые символы. Если вы хотите использовать только буквы и цифры, измените (.*) на ([A-Za-z0-9])

3 голосов
/ 26 марта 2012

Включить mod_rewrite и .htacess.Затем добавьте этот код в ваш .htaccess под DOCUMENT_ROOT:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

# If the request is not for a valid directory
RewriteCond %{REQUEST_FILENAME} !-d
# If the request is not for a valid file
RewriteCond %{REQUEST_FILENAME} !-f
# If the request is not for a valid link
RewriteCond %{REQUEST_FILENAME} !-l
# finally this is your rewrite rule
RewriteRule ^blog/(.+)$ blog.php/$1 [L,NC]
1 голос
/ 26 марта 2012

1 Вы должны установить mod-rewrite

2 Вы должны убедиться, что для корневого каталога вашего документа установлено «AllowOverride All».Обычно после конфигурации виртуального хоста вы должны найти что-то вроде:

<Directory "/your/doc/root/path/">
    AllowOverride All
</Directory>

3 После этого вы должны запустить механизм перезаписи и создать правило перезаписи в вашем .htaccess, как советует Дэвид Беланджер:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule     ^blog/(.*)$     blog.php/$1 [L]
</IfModule>
1 голос
/ 26 марта 2012

Удаление расширения файла:

Есть два способа сделать это.Простой способ, который просто смотрит на запрос, если запрашиваемое имя файла не существует, то он ищет имя файла с расширением .php (или .asp или что-то еще).В файле .htaccess:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ $1.php [L,QSA]

Теперь, если вы перейдете к: http://domain/about, сервер будет интерпретировать его так, как если бы вы перешли к http://domain/about.php.

Имеет смысл, но если мы уже разрываем связь между URL-адресом и именем файла, мы можем также разумно разорвать его.Измените этот файл .htaccess:

 RewriteEngine On
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

Источник: Dave Dash -> http://davedash.com/2006/07/26/how-to-remove-file-extensions-from-urls/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...