/ / .htaccess rewrite muda erro de URL - .htaccess, mod-rewrite

.htaccess reescrever mudanças erro url -. htaccess, mod-reescrever

Eu fiz algumas coisas de redirecionamento no meu .htaccess e funciona muito bem.

RewriteEngine On
# add www. if missing
RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
# redirect index.html and index.php to the simple homepage
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.php|/index.html HTTP/
RewriteRule ^index.php$|^index.html$ http://www.example.com/ [R=301,L]
# add trailing slash if missing
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*[^/]$ /$0/ [L,R=301]
# redirect simulated directories to php files of the same name in /content/
RewriteCond %{REQUEST_URI} !^(/css|/images) [NC]
RewriteRule ^([^/]+)/$ content/$1.php?rw=1 [QSA,L]
RewriteCond %{QUERY_STRING} !^rw=1
RewriteRule ^content/([^/]+).php$ /$1/ [R=301,L]

Mas enquanto a parte que adiciona barras finais éativado, há um problema estranho com urls que não existem e que são direcionados para minha página de erro 404: Por exemplo, se eu inserir www.example.com/notexisting/ esse url será transformado em www.example.com/content/notexisting.php/?rw=1 Isso não acontece quando eu desabilito a parte de barras finais ou a parte de diretórios simulados em htaccess. Mas eu quero manter os dois. Existe uma possibilidade?

Respostas:

0 para resposta № 1

Parece que você pode facilmente consertar seuproblema adicionando uma condição extra ao seu redirecionamento "barra". Parece que você não tem nenhum url que termine em .php, então você pode verificar se seu url já termina com isso. Se não for esse o caso, você pode adicionar a barra.

RewriteEngine On

# add www. if missing
RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

# redirect index.html and index.php to the simple homepage
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.php|/index.html HTTP/
RewriteRule ^index.php$|^index.html$ http://www.example.com/ [R=301,L]

# add trailing slash if missing
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !.php$
RewriteRule ^.*[^/]$ /$0/ [L,R=301]

# redirect simulated directories to php files of the same name in /content/
RewriteCond %{REQUEST_URI} !^(/css|/images) [NC]
RewriteRule ^([^/]+)/$ content/$1.php?rw=1 [QSA,L]

RewriteCond %{QUERY_STRING} !^rw=1
RewriteRule ^content/([^/]+).php$ /$1/ [R=301,L]