2012-01-08 7 views
0

Я хочу перенаправить все на один скрипт, например. index.php?url=inputurlcustom .htaccess переписать правила

С, если/еще я хочу, чтобы разобрать URL-адрес

в index.php запросе выполнения для URL в моей пользовательской таблицы

  • если URL является маш: эхо "ОК"
  • еще ничего не делать

How сек Должен ли я установить .htaccess в корневую папку Wordpress?

Пример:

URL-адреса в custom_table:

  • ASD
  • ДФГ
  • ghj

Если пользователь помещает:

www.mysite.com/asd

-> mod_rewrite должен вывести это: www.mysite.com/index.php?url=asd

Else если пользователь ставит:

WWW. mysite.com/zzz

-> ничего не делать

ответ

2

я думаю следующее .htaccess должен решить проблему:

RewriteEngine On 

# Redirects everything that is not index.php to index.php 
RewriteCond $1 !^index\.php 
RewriteRule ^(.*)$ index.php?url=$1 [L,R] 

Edit: не включать папки и файлы (например,/JS,/CSS и т.д.) в переписывании, добавьте следующие строки перед RewriteRule линии (см комментарии):

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

И в скрипте PHP:

$url = $_GET['url']; 

// the method is_valid should check if the page exists in DB 
if (is_valid($url)) { 
    // do something here 
    // maybe redirect with header('Location: path') 
} else { 
    // show a not found page (error 404) 
} 
+0

Скорее всего, он также нуждается в 'RewriteCond', чтобы проверить, если URL ссылается на реальный файл на диске, потому что, скорее всего, он не хочет изображения/CSS/JavaScript-файлы, чтобы пройти через' index.php '.Этот «RewriteCond» будет отображать тот, который у вас устарел. –

+1

@abhi Конечно, я не думал об этом. Добавляя эти две строки до того, как RewriteRule должен решить эту проблему? 'RewriteCond% {REQUEST_FILENAME}! -f' ' RewriteCond% {REQUEST_FILENAME}! -d' –

2

Вы хотите, чтобы оба могли читать из базы данных и ничего не делать, если нет совпадения.

Для этого потребуется запустить код для доступа к db, а затем вернуться к apache для обработки и невозможен из .htacccess (хотя он из httpd.conf).

Решение .htaccess должно указывать все строки таблицы, как показано ниже.

RewriteEngine on 
RewriteBase/

#if asd or dfg or ghj 
RewriteCond %{REQUEST_URI} ^/(asd|dfg|ghj) [NC] 
RewriteRule . index.php?url=%{REQUEST_URI} [L] 
Смежные вопросы