Дружественный URL, как заставить его работать с HTACCESS


я Создал некоторые правила в моем файле .htaccess для форматирования отображения URL, но я с большим трудом передать параметр на страницу, которая показывает продукты и покажу Дружественных URL отформатированный код так:

RewriteEngine On
RewriteRule ^Pagina-Inicial\/?$ index.php?acessando=home [L]
RewriteRule ^institucional\/?$ index.php?acessando=institucional [L]
RewriteRule ^promocoes\/?$ index.php?acessando=promocoes [L]
RewriteRule ^lojas\/?$ index.php?acessando=lojas [L]
RewriteRule ^lojas\/?$ index.php?acessando=loja [L]
RewriteRule ^contato\/?$ index.php?acessando=contato [L]
RewriteRule ^trabalhe\/?$ index.php?acessando=trabalhe [L]

RewriteRule ^([a-z,0-9,A-Z,_-]+)$ /produtos.php?dep=$1
RewriteRule ^([a-z,0-9,A-Z,_-]+)\/([a-z,0-9,A-Z,_-]+)$ /produtos.php?dep=$1&sup=$2
RewriteRule ^([a-z,0-9,A-Z,_-]+)\/([a-z,0-9,A-Z,_-]+)\/([a-z,0-9,A-Z,_-]+)$ /detalhes.php?produto=$1&dep=$2&sub=$3

, например, когда клиент нажимает на КУХНЕ перенаправляет вас на страницу продуктах.php, передав параметр и, показывая на URL что-то я сделал редактирование, чтобы попытаться дать более ясный.

При нажатии в главном меню, сегодня вот так:

http://moveissaobento.com.br/msb/produtos.php?dep=1
http://moveissaobento.com.br/msb/produtos.php?dep=2
http://moveissaobento.com.br/msb/produtos.php?dep=3

я Хотел бы оставить так:

http://moveissaobento.com.br/msb/COZINHA
http://moveissaobento.com.br/msb/DORMITORIO
http://moveissaobento.com.br/msb/SALA-DE-JANTAR

При нажатии на подменю, сегодня вот так:

http://moveissaobento.com.br/msb/produtos.php?dep=1&sub=4
http://moveissaobento.com.br/msb/produtos.php?dep=2&sub=15
http://moveissaobento.com.br/msb/produtos.php?dep=3&sub=34

я Хотел бы оставить так:

http://moveissaobento.com.br/msb/COZINHA/AMBIENTE-MESA-C/-BANQUETAS
http://moveissaobento.com.br/msb/COZINHA/AMBIENTE-MESA-C/-CADEIRAS

я Не знаю точно, как это сделать, чтобы показать URL в удобной для пользователя форме.

Author: NoobSaibot, 2015-03-11

2 answers

Flag QSA, информирует о том, что только QUERY_STRING сможет получить к ним доступ.
A flag) NC (nocase), чтобы игнорировать case sensitive (коробка высокая/низкая).
A flag) L (last) - это флаг, чтобы указать, что текущее правило должно применяться немедленно, без рассмотрения других правил (то есть, она становится независимым).

Flag R (redirect) вызывает перенаправления HTTP (когда есть домен или сервер, написанный на URL-адрес браузера).

, Чтобы начать правила использования: ^ для завершения правило, use: $, используйте регулярные выражения для обработки данных, которые будут предоставлены в URL-адрес браузера, чтобы интерпретировать вывод url-адрес системы.

Для каждого набора правил, например, (regra1)(regra2)(regran...) перед правилом, наведите адрес: sua_pagina.php?data1=$1&data2=$2&data3=$..., связи, наведите правило формате, который она будет читать страницы, и после того, как URL-адрес, поместите флаги, перечисленные в квадратных скобках [], есть несколько флагов, которые могут быть встречался здесь.

Это позволяет Google, или в других поисковых системах лучше индексировать ваш сайт.
Чтобы узнать больше, посетите документации Apache.

 RewriteEngine On
    #aqui criamos uma condição para que os arquivos sejam ignorados nas regras abaixo
    RewriteCond %{REQUEST_FILENAME} !-f
  #aqui criamos uma condição para que diretórios sejam ignorados nas regras abaixo
    RewriteCond %{REQUEST_FILENAME} !-d
    #aqui definimos onde começa a base das regras
    #vamos supor que fosse um subdiretório, como por exemplo: /vs1/
    RewriteBase /
    #aqui ignoramos o uso de barra no final
    RewriteRule ^(.+)\/?$ $1 [R,L]

    #fix rules 
    RewriteRule ^pagina-inicial$ index.php?acessando=home [QSA,L,NC]
    RewriteRule ^institucional$ index.php?acessando=institucional [QSA,L,NC]
    RewriteRule ^promocoes$ index.php?acessando=promocoes [QSA,L,NC]
    RewriteRule ^lojas$ index.php?acessando=lojas [QSA,L,NC]
    RewriteRule ^loja$ index.php?acessando=loja [QSA,L,NC]
    RewriteRule ^contato$ index.php?acessando=contato [QSA,L,NC]
    RewriteRule ^trabalhe$ index.php?acessando=trabalhe [QSA,L,NC]

    #dinamic rules
    RewriteRule ^msb\/([0-9A-z_-]+)$ msb/produtos.php?dep=$1 [QSA,L,NC]
    RewriteRule ^msb\/([0-9A-z_-]+)\/([0-9A-z_-]+)$ msb/produtos.php?dep=$1&produto=$1 [QSA,L,NC]
    RewriteRule ^msb\/([0-9A-z_-]+)\/([0-9A-z_-]+)\/([0-9A-z_-]+)$ msb/detalhes.php?produto=$1&dep=$2&sub=$3 [QSA,L,NC]

, Здесь есть предложения по сайту, чтобы настроить свои правила: http://regexr.com/

 25
Author: Ivan Ferrer, 2015-09-16 00:32:52

Думаю, Не очень интересно писать, твои правила, так

RewriteRule ^Pagina-Inicial\/?$ index.php?acessando=home

Глядя в сторону небольшой системы, кажется, не быть проблемой, но если ты имеет очень большой будет необходимость, ты писать много правил, увы, перестает быть интересной, но если ты получать query полный url-ты, можно обработать ее в PHP и направить так, что ты хотите, например htaccess, который я использую это

# compressão básica
<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file \.(html?|txt|css|js)$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</IfModule>
# Proteger os arquivos e diretórios
<FilesMatch "(\.(engine|inc|info|install|module|profile|po|sh|.*sql|theme|tpl(\.php)? |xtmpl)|code-style\.pl|Entries.*|Repository|Root|Tag|Template)$">
Order allow,deny
</FilesMatch>
# Não mostrar listagens de diretório
Options -Indexes
# Regras básicas de reescrita, parar desnecessários bot PERL, bloquear diretórios de subversão
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*/)?\.svn/ - [F,L]
ErrorDocument 403 "Acesso proibido"
RewriteCond %{HTTP_USER_AGENT} libwww-perl.*
RewriteRule .* – [F,L]
RewriteRule ^([A-Za-z0-9\/]+)$ index.php?$1 [NC,L]
</IfModule>

Например, если запрос так "http://example.com/news/economy" мое правило:

RewriteRule ^([A-Za-z0-9\/]+)$ index.php?$1 [NC,L]

Будет получать "news/economy" потому что мой regex позволяет букв, цифр и панели, поэтому я могу обрабатывать мои url-адреса в коде, и если что-то, что пользователь вводит, и не в моей системе я уже redireciono для страницы 404. я надеюсь, что помог. ;)

 5
Author: Renorram, 2015-09-16 13:42:30