como remover a extensão .php usando o htaccess no godaddy linux hosting

2

Como remover a extensão .php usando o arquivo .htaccess . Eu tentei muitos exemplos sem sucesso. Um erro interno do servidor é mostrado regularmente. Estou usando o Godaddy Linux Hosting.

Este código é o mais recente que estou usando.

<IfModule mod_rewrite.c> 
     Options All -Indexes 
     Options +FollowSymLinks -MultiViews 
     RewriteEngine On 
     RewriteBase /

     # Unless directory, remove trailing slash 
     RewriteCond %{REQUEST_FILENAME} !-d 
     RewriteRule ^([^/]+)/$ http://a.sprybirds.com/$1 [R=301,L] 

     # Redirect external .php requests to extensionless url 
     RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/ 
     RewriteRule ^(.+)\.php$ http://a.sprybirds.com/$1 [R=301,L] 

     # Resolve .php file for extensionless php urls 
     RewriteRule ^([^/.]+)$ $1.php [L]
</IfModule>

O site está estacionado em um subdomínio http://subdomain.example.com e a sequência de pastas é igual a web-root/sub_folder/site_folder/ .

    
por Kunwar Asif Ali Khan 28.06.2015 / 08:40

2 respostas

0

A questão está faltando exemplos de URLs, o que é realmente essencial para diagnosticar tais problemas, no entanto ...

# Resolve .php file for extensionless php urls 
RewriteRule ^([^/.]+)$ $1.php [L]

Isso corresponde apenas aos URLs com segmentos de caminho único, por exemplo. URLs que estão efetivamente na raiz do documento, por exemplo. %código%. Não corresponderá a URLs com vários segmentos de caminho, por exemplo. URLs que estão efetivamente em subdiretórios, por exemplo. /foo - o que explicaria porque você está obtendo 404s para "arquivos php dentro da subpasta".

Você precisa remover a barra no padrão /foo/bar para corresponder a qualquer profundidade de URL:

RewriteRule ^([^.]+)$ $1.php [L]

Ao incluir uma barra na classe de caractere negada, você só estará combinando URLs que não contenham uma barra. ie. URLs na raiz do documento apenas.

(Não há necessidade de barra invertida escapar de um ponto literal quando usado dentro de uma classe de caractere.)

    
por 15.10.2018 / 16:22
0

Você tem um arquivo .htaccess em ./public_html/? Se sim, o que tem dentro? A maneira como o .htaccess trabalha é dando ao diretório mais próximo da prioridade real da raiz.

Como exemplo:

/home/username/public_html/.htaccess

recebe uma prioridade maior (ou seja, mais controle) do que

/home/username/public_html/sub_directory/.htaccess

Se o arquivo .htaccess principal estiver definindo as regras de uma forma e o subdiretório estiver definindo-as como outras, é possível que você execute problemas (por exemplo, um erro).

Se você estiver definido em sua raiz da web real, as linhas a seguir podem estar causando alguns problemas, pois o cPanel permite que os administradores do servidor definam essas opções por padrão no WHM. Se eles já estiverem definidos (especificamente -Indexes), você provavelmente verá um erro.

Options All -Indexes
Options +FollowSymLinks -MultiViews

Nota : A diretiva -Indexes é normalmente configurada por padrão antes mesmo de os clientes serem colocados em um servidor (ou deveria ser, a menos que haja uma razão específica para isso), FYI. Essa é mais uma recomendação de segurança para impedir a navegação no diretório, pois nem todo cliente saberá que, a menos que haja um arquivo index.[ext] em todos os diretórios, seus diretórios estarão abertos para quem quiser ver.

Se remover esses erros, você encontrou o problema :). Se a remoção dessas linhas não funcionar, faça um teste & erro é onde precisamos começar.

Voltar para o início, procure nos diretórios que residem acima do diretório com o qual você está tendo problemas. Verifique os arquivos .htaccess e certifique-se de ter "mostrar ou mostrar arquivos ocultos" marcados ou definidos como "yes" no programa S / FTP que você está usando, pois nem sempre são visíveis por padrão.

A partir daqui, o melhor curso de ação seria fazer o backup de cada arquivo .htaccess e adicioná-los novamente um por um até você executar outro erro. Dessa forma, você pode marcar o upload do arquivo que trouxe o erro e podemos dar uma olhada nele.

Atualização # 01

Como o culpado pelo erro provavelmente foi o -Indexes , você pode adicionar o seguinte de volta ao arquivo .htaccess :

Options +FollowSymLinks -MultiViews

Se isso não resolver o erro 404, tente o seguinte:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /

# Adds Trailing Slash to the URI as long as it's not for a
# file.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/|#(.*))$
RewriteRule ^(.*)$ http://subdomain.example.com/$1/ [R=301,L]

# Checks to make sure the request is a directory.
# Checks to see if the request matches a file with a .php ext.
# If all is well, push the request through to the matching file.
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^\.]+)/$ http://subdomain.example.com/$1.php
    
por 28.06.2015 / 12:59