.htaccess: Модификация URL - PullRequest
0 голосов
/ 03 февраля 2012

Я храню большую часть общедоступного содержимого моего веб-сайта в папке с именем "pages", внутри которой у меня есть папка для каждой страницы, а затем внутри каждой из них есть папки для каждого типа содержимого.

Редактировать: Переписано, чтобы было более понятно.

Итак, мой типичный URL: http://www.example.co.uk/folderName/folderName/folderName/fileName.php

Но я бы хотел, чтобы это отображалось так: http://www.example.co.uk/fileName

Мне также нужно, чтобы URL работал с переменными PHP, застрявшими в конце, например: http://www.example.co.uk/fileName?phpVar=1

Я знаю, что это возможно, поскольку я вижу, что это сделано везде. : L

Ответы [ 2 ]

3 голосов
/ 03 февраля 2012

Может быть, это?

# Turn mod_rewrite on
RewriteEngine On
# If the request is not for a valid file
RewriteCond %{REQUEST_FILENAME} !-d
# If the request is not for a valid directory
RewriteCond %{REQUEST_FILENAME} !-f
# Rewrite /filename to /pages/filename/pages/filename.php
RewriteRule ^(.+)$ /pages/$1/pages/$1.php [L]
0 голосов
/ 04 февраля 2012
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^fileName1/?$ folderName/folderName/folderName/fileName1.php [L]
RewriteRule ^fileName2/?$ folderName/folderName/folderName/fileName2.php [L]

Должен делать то, что вы ищете. Предполагая, что вы хотите, чтобы пользователи видели http://example.com/about.php как http://example.com/about.

Добавление RewriteCond %{REQUEST_FILENAME} !-d также может быть необходимо, но из вашего описания не ясно.


Чтобы ваша домашняя страница всегда показывала "home" в URL, вы должны использовать что-то вроде следующего в вашем индексном файле:

if ($_SERVER['REQUEST_URI'] == '/index.php' or $_SERVER['REQUEST_URI'] == '/') {
  header('Location: http://'.$_SERVER['HTTP_HOST'].'/home');
}

А затем добавьте это в ваш файл .htaccess:

RewriteRule ^home$ index.php [L,QSA]
...