2015-01-27 3 views
4
  • Я просто не знаком с .htaccess.
  • Мне нужно переписать правила для URLs.
  • Я использовал Google и применял, но не изменял URL.

Я хочу:Как написать правило перезаписи htaccess для seo friendly url

demo.example.com/section.php?id=1 

Изменен:

demo.example.com/section/sample-section 

я попытался

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

RewriteRule ^section/(\d+)*$ ./section.php?id=$1 

, но нет никакой разницы

Спасибо.

Поблагодарите вашу помощь.

+2

возможно дубликат [Ссылка: мод \ _rewrite, URL переписывания и "симпатичной ссылка" объяснили] (http://stackoverflow.com/questions/20563772/ ссылка-mod-rewrite-url-rewriting-and-pretty-links-explain) – David

+0

Не могли бы вы вставить свой полный '.htaccess'? Установлен и активирован модуль перезаписи? – ojrask

+0

Ссылки, как правило, обескуражены на SO, поэтому я помещаю это в комментарий. A должен читать для каждого начинающего mod_rewrite. http://code.tutsplus.com/tutorials/an-in-depth-guide-to-mod_rewrite-for-apache--net-6708 – brezanac

ответ

6

Во-первых, убедитесь, что mod_rewrite является включен и Htaccess файлы позволили в конфигурации Apache.

Затем поместите этот код в Htaccess (который должен находиться в корневой папке)

Options -MultiViews 
RewriteEngine On 

# redirect "/section.php?id=xxx" to "/section/xxx" 
RewriteCond %{THE_REQUEST} \s/section\.php\?id=([0-9]+)\s [NC] 
RewriteRule^/section/%1? [R=301,L] 

# internally rewrite "/section/xxx" to "/section.php?id=xxx" 
RewriteRule ^section/([0-9]+)$ /section.php?id=$1 [L] 
+0

lurman благодарит вас. он работает очень хорошо. одна вещь, которую я хочу спросить. Теперь мне нужно изменить свой PHP-код соответственно. я имею в виду, нужно объяснить и получить название раздела? –

+0

На самом деле вам не нужно ничего менять, так как вы все еще получаете параметр 'id' в обратном направлении (скрытый). Я не уверен, что понял ваш вопрос, если это не так, объясните, пожалуйста, –

+0

да, это то, что я хотел узнать об id. Но после применения этого htaccess. я получаю ошибку 404. –

1
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^section/([^/]+)$ /section.php?id=$1 [L] 

Это превратит example.com/section.php?id=X в example.com/section/X

Я предлагаю хранить URI в базе данных, то используя section.php? uri =

Например:

example.com/section.php?uri=super-awesome

превратится в:

example.com/section/super-awesome

Смежные вопросы