Eu preciso reescrever um monte de URLs (cerca de 100 ou mais) para fins de SEO, e pode haver mais a ser adicionado no futuro (provavelmente outro 50-100 mais tarde). Eu preciso de uma maneira flexível de fazer isso e, até agora, a única maneira que posso pensar é editar o arquivo .htaccess usando o mecanismo de reescrita.
Por exemplo, eu tenho um monte de URLs como este (observe que a string de consulta é irrelevante e dinâmica; poderia ser qualquer coisa. Eu estava apenas usando-as apenas como exemplo. Estou focando apenas no nome do caminho). -a parte entre o nome do host e a string de consulta, conforme marcado em negrito abaixo:
link seo_term1 ? utm_source = google & utm_medium = cpc & utm_campaign = seo_term
link another_seo_term2 ? utm_source = facebook & utm_medium = cpc & utm_campaign = seo_term
link yet_another_seo_term3 ? utm_source = exemplo_ad_network & utm_medium = cpc & utm_campaign = seo_term
link foobar_seo_term4
link blah_seo_term5 ? test = 1
etc ...
E todos eles estão sendo reescritos para (por enquanto): http://example.com/
Qual é a maneira mais eficiente / eficaz de fazer isso para que eu possa adicionar mais termos no futuro?
Uma solução que encontrei é fazer isso (no arquivo .htaccess):
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ / [NC,QSA]
No entanto, o problema com esta solução é que mesmo urls inválidos (como http://example.com/blah
) serão reescritos para http://example.com
ao invés de dar um código 404 (que é o que é suposto fazer de qualquer maneira). Eu ainda estou tentando descobrir como tudo isso funciona, e a única maneira que posso pensar é escrever mais 100 RewriteCond
declarações (como: RewriteCond %{REQUEST_URI} =/seo_term1 [NC,OR]
) antes da diretiva RewriteRule
. Por exemplo:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} =/seo_term1 [NC,OR]
RewriteCond %{REQUEST_URI} =/another_seo_term2 [NC,OR]
RewriteCond %{REQUEST_URI} =/yet_another_seo_term3 [NC,OR]
RewriteCond %{REQUEST_URI} =/foobar_seo_term4 [NC,OR]
RewriteCond %{REQUEST_URI} =/blah_seo_term5 [NC]
RewriteRule ^(.*)$ / [NC,QSA]
Mas isso não parece muito eficiente para mim. Existe uma maneira melhor?