2012-02-08 3 views
0

У меня возникли проблемы с переписанием простого URL-адреса с помощью .htaccess.Простые ошибки перезаписи URL-адреса

URL, я пытаюсь переписать это:

http://www.domain.com/index.php?page=PAGE_NAME 

Я хотел бы PAGE_NAME быть непосредственно после того, как домен, например, если PAGE_NAME является блог:

http://www.domain.com/blog 

На данный момент я не добились успеха:

RewriteRule ^/?([a-zA-Z0-9_-]+)?$ index.php?page=$1 

Вся помощь действительно оценена.

Заранее спасибо.

Мой текущий файл .htaccess:

<IfModule mod_rewrite.c> 

Options +FollowSymLinks 
Options +Indexes 
RewriteEngine On 

ErrorDocument 404 /search.php?page=notfound 

# Add WWW to URL 
RewriteCond %{HTTP_HOST} ^cristianrgreco\.com$ [NC] 
RewriteRule ^(.*)$ http://www.cristianrgreco.com/$1 [L,R=301] 

# Remove trailing slashes from end of URL 
RewriteCond %{HTTP_HOST} !^\.cristianrgreco\.com$ [NC] 
RewriteRule ^(.+)/$ http://%{HTTP_HOST}/$1 [L,R=301] 

# Rewrite main page URLs 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\?page=([^\ ]+) [NC] 
RewriteRule^%1? [L,R=301] 
RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?page=$1 [L,NC] 

# Rewrite download URLs 
RewriteRule ^download/([a-zA-Z0-9._-]+)/?$ download.php?file=$1 

# Rewrite page navigation links 
RewriteRule ^(.+?)/page-([a-zA-Z0-9_-]+)?$ $1.php?currentpage=$2 

# Rewrite article URLs 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^/?([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/?$ articles.php?article=$2 

# Remove file extension from PHP files 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteRule ^([^\.]+)$ $1.php [NC,L,QSA] 

</IfModule> 

ответ

0

Попробуйте добавить следующее в .htaccess файл в корневом каталоге вашего сайта.

RewriteEngine on 
RewriteBase/

#add these next 2 lines if you need to redirect http://www.domain.com/index.php?page=PAGE_NAME to http://www.domain.com/PAGE_NAME 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\?page=([^\ ]+) [NC] 
RewriteRule^%1? [L,R=301] 

#send request to index.php 
RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?page=$1 [L,NC] 
+0

я только что нашел одну проблему, теперь все страницы получают направленное на index.php, например, если происходит от index.php в search.php, index.php будет отправить сообщение об ошибке сказав «страница не найдена» – Cristian

+0

@Cristian Я пару раз редактировал решение: у вас есть версия выше? Если нет, можете ли вы использовать последние. Если да, 'RewriteRule' выше не будет соответствовать' search.php' и не должен вызывать результат, который вы описываете. Есть ли у вас какие-либо другие правила в вашем .htaccess? –

+0

Я не знаю, как это сделать, но проблема в том, что все после отправки domain.com/XXXX на index.php, как я могу сделать так, чтобы он был направлен только на index.php, если это domain.com /? page = XXXX? – Cristian