← Desenvolvimento

Ajuda com RewriteRules

Lida 2711 vezes

Offline

kurtmix 
Membro
Mensagens 1895 Gostos 605
Feedback +4

Troféus totais: 28
Trófeus: (Ver todos)
Tenth year Anniversary Nineth year Anniversary Eighth year Anniversary Seventh year Anniversary Search Level 5 Windows User Super Combination Combination Topic Starter

Estou com um problema com a função SEF de um dos meus sites, se activo esta função o mod_rewrite não funciona correctamente e redirecciona sempre para a página inicial.
Por exemplo no menu em qualquer botão que clique vai para a main page.
Não estou a perceber porque acontece isso.
Isto é o que tenho no .htaccess para a função rewrite:

Código: [Seleccione]
<IfModule mod_rewrite.c>

Options -Indexes

Options +FollowSymLinks

DirectoryIndex main.php

RewriteEngine on



#### Prevent web and bot scrapers ##############################################

RewriteCond %{HTTP_USER_AGENT} ^.*(baidu|craftbot|download|extract|stripper|sucker|ninja|clshttp|webspider|leacher|collector|grabber|webpictures).*$ [NC]

RewriteRule . - [F,L]

   

#### Header Links ##############################################################                                             

RewriteRule ^([Ss]{1})earch$ search.php?sef=1&%{QUERY_STRING} [L,QSA]                                                       

RewriteRule ^([Rr]{1})egister$ registration.php?sef=1&%{QUERY_STRING} [L,QSA]                                             

RewriteRule ^([Ww]{1})atchlist$ watchlist.php?sef=1&%{QUERY_STRING} [L,QSA]                                                 

RewriteRule ^([Aa]{1})ccounting$ accounting.php?sef=1&%{QUERY_STRING} [L,QSA]                                               

RewriteRule ^([Pp]{1})references$ preferences.php?sef=1&%{QUERY_STRING} [L,QSA]                                           

RewriteRule ^([Mm]{1})essages$ messages.php?sef=1&%{QUERY_STRING} [L,QSA]                                                   

RewriteRule ^([Pp]{1})ortfolios$ portfolio.php?sef=1&%{QUERY_STRING} [L,QSA]                                             

RewriteRule ^([Nn]{1})onprofits$ nonprofits.php?sef=1 [L,QSA]   

#### [Images Rewrite]

RewriteRule ^i/(.+)/(.+)/(.+)/([0-9]+)x([0-9]+)_(.+)$ attachment.php?cmd=$1&subcmd=$2&id=$3&w=$4&h=$5&sef=1 [L,QSA]           

RewriteRule ^i/(.+)/(.+)/([0-9]+)x([0-9]+)_(.+)$ attachment.php?cmd=$1&id=$2&w=$3&h=$4&sef=1 [L,QSA]                           
RewriteRule ^i/(.+)/(.+)$ attachment.php?id=$1&sef=1 [L,QSA]                                                                   



RewriteCond %{REQUEST_URI} ^(/(.+)/(.{1}))

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_URI} !(\.html|\.php|\.)

RewriteRule ^(.*)$ main.php?sef=1 [L,QSA]

</IfModule>                                                           


Alguém vê no código algum motivo para direccionar sempre para a main page?
Offline

=IceBurn= 
Membro
Mensagens 897 Gostos 3
Feedback +3

Troféus totais: 32
Trófeus: (Ver todos)
Windows User Level 6 Linux User Mobile User Super Combination Combination Topic Starter Poll Voter Poll Starter Level 5

Estás a trabalhar no directório de raiz ou num sub-directório?

Por outras palavras, os URL's ficam algo deste género:

www.dominio.com/messages

OU

www.dominio.com/directorio/messages


Pergunto porque se estiveres a trabalhar num sub-directório, podes querer adicionar RewriteBase.
Offline

kurtmix 
Membro
Mensagens 1895 Gostos 605
Feedback +4

Troféus totais: 28
Trófeus: (Ver todos)
Tenth year Anniversary Nineth year Anniversary Eighth year Anniversary Seventh year Anniversary Search Level 5 Windows User Super Combination Combination Topic Starter

é no directório de raiz, e o servidor tem a função activa, aliás tenho vários sites no mesmo servidor e todos funcionam perfeitamente com SEF, neste caso é que não, o script é comprado e a empresa que dá suporte não me resolve o problema, o ficheiro .htaccess está como me foi entregue ao comprar a licença, mas estive a dar uma olhada e parece estas tudo bem, por isso coloquei aqui para que me digam de vêem alguma coisa que eu não vi que esteja mal, ou se falta algo.
Se retiro  a função
Código: [Seleccione]
RewriteRule ^(.*)$ main.php?sef=1 [L,QSA]  começa-me a dar erro 404, ou seja acho que o redireccionamento para a main page é por causa de dar erro 404, para não apresentar o erro direcciona.
Mas não vejo qual o motivo para isso acontecer, o erro 404 deverá ser causado por alguma função erronea, mas não sei qual.
O suporte ao cliente da empresa que me vendeu o script é uma porcaria, apenas dizem que o problema tem que ser no servidor e para contactar a empresa de alojamento, mas no servidor parece tudo ok e outros sites que são em wordpress rolam de maravilha.
Offline

=IceBurn= 
Membro
Mensagens 897 Gostos 3
Feedback +3

Troféus totais: 32
Trófeus: (Ver todos)
Windows User Level 6 Linux User Mobile User Super Combination Combination Topic Starter Poll Voter Poll Starter Level 5

Isso é estranho, porque por exemplo, quando retiras essa regra que mencionas, ao acederes a www.tdl.com/search ele nunca devia chegar a esse ponto, a menos que haja ficheiros em falta.

Pode parecer uma pergunta parva, mas por exemplo, tens o ficheiro /search.php na pasta de raiz?

Offline

kurtmix 
Membro
Mensagens 1895 Gostos 605
Feedback +4

Troféus totais: 28
Trófeus: (Ver todos)
Tenth year Anniversary Nineth year Anniversary Eighth year Anniversary Seventh year Anniversary Search Level 5 Windows User Super Combination Combination Topic Starter

O ficheiro search.php está na raíz, o site finciona bem se não usar rewrite, tudo funciona bem, pelo que não deve ser falta de nenhum ficheiro. O error log não mostra nada se não usar rewrite, eu queria usar porque é bom para SEO, mas as funções do site em funcionamento normal correm lindamente.
Se desactivar a regra que mencionei, dá para entrar no site e entrar nas partes que não exigem rewrite, por exemplo tld.com/register.php mas se entro numa parte que use rewrite dá erro. Se não retirar essa regra em vez do erro vai para a main.php e fica na barra de endereço do browser a url SEF, não fica main.php, como se estivesse no local certo mas mostra o conteúdo da main.
Offline

=IceBurn= 
Membro
Mensagens 897 Gostos 3
Feedback +3

Troféus totais: 32
Trófeus: (Ver todos)
Windows User Level 6 Linux User Mobile User Super Combination Combination Topic Starter Poll Voter Poll Starter Level 5

Ok, dá-me um exemplo real de um URL (claro, não é necessário TDL) que não consigas aceder.
Offline

kurtmix 
Membro
Mensagens 1895 Gostos 605
Feedback +4

Troféus totais: 28
Trófeus: (Ver todos)
Tenth year Anniversary Nineth year Anniversary Eighth year Anniversary Seventh year Anniversary Search Level 5 Windows User Super Combination Combination Topic Starter

Resolvido, amigo =IceBurn=  obrigado pela disponibilidade em ajudar.  :obrigado:


Já resolvi o problema e este caso serviu-me para ver que o suporte da empresa que me vendeu o script de nada vale.
No meu caso não cobram suporte, dizem estar incluído no preço da licença e depois é o que se vê. Mas muitas vezes compra-se o suporte à parte e dá no mesmo, 80% das vezes temos que ser nós a resolver.
Offline

=IceBurn= 
Membro
Mensagens 897 Gostos 3
Feedback +3

Troféus totais: 32
Trófeus: (Ver todos)
Windows User Level 6 Linux User Mobile User Super Combination Combination Topic Starter Poll Voter Poll Starter Level 5

Não tens de quê. Ainda bem que está resolvido :)