.htaccess e configuração do php

1

Estou tendo alguns problemas para obter a configuração correta para o arquivo .htaccess.

Eu criei um site pequeno usando o padrão mvc e todos os URLs se parecem com site.com/appname/public/index.php?param=page. Estou tentando obter todas as URLs como site.com/page. Eu procurei nos documentos do Apache, mas ainda estou confuso ...

Isso é o que eu tenho agora no diretório / public:

Options -MultiViews
RewriteEngine on
RewriteBase /appname/public/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

E isso é o que eu tenho no diretório raiz:

  RewriteEngine On
  RewriteRule ^(.*)$ appname/public [R=301,L]

Isso está funcionando bem, redirecione para index.php (no diretório / public) e reescreva todos os URLs em site.com/appname/public/page.

Agora estou triyng para obter mais e gostaria de esconder também / appname / public, mas não posso entender como. Devo combinar mais RewriteRule para combinar com "/ appname / public"?

Alguma sugestão?

Muito obrigado!

EDIT: mais informações sobre o que estou tentando alcançar.

Eu tenho uma árvore de diretórios como:

htdocs
|---appname
    |
    |---app
    |   |---other_dirs
    |   |---other_files
    |  
    |---public
        |---some_dirs/file
        |--- index.php

Para acessar minhas páginas, preciso apontar o navegador para index.php e passar algum valor GET. Assim, todos os URLs devem ser semelhantes:

site.com/appname/public/index.php?val=page

Isso é o que eu tenho agora (com as regras acima)

site.come/appname/public/page

E é isso que eu estou tentando entender ...

site.com/page

Eu não entendo como reescrever / esconder também a parte do meio, mantendo o último com a estrutura "? url = $ 1" ("url" será manipulado em um controller, analisado e assim por diante).

Espero que seja mais claro.

Obrigado! :)

    
por dan_ff 23.02.2017 / 03:52

1 resposta

0

Eu não entendi a pergunta. Por favor, esclareça.

O diretório RewriteBase está no diretório documentroot? O que você está tentando eliminar?

Manual do Apache Mod_Rewrite

fornece muitos exemplos e detalhes sobre como gerenciar o mod_rewrite

Dê uma olhada lá primeiro e responda com mais detalhes sobre sua configuração.

Isso é extraído dessa página e detalha porque você usa rewritebase. As pastas que você deseja truncar estão todas na pasta htdocs ou estão fora do diretório público docroot ou htdocs ou www ou qualquer nome que você tenha nomeado seu diretório raiz de documentos?

RewriteBase Directive

Description:    Sets the base URL for per-directory rewrites
Syntax: RewriteBase URL-path
Default:    None
Context:    directory, .htaccess
Override:   FileInfo
Status: Extension
Module: mod_rewrite
The RewriteBase directive specifies the URL prefix to be used for per-directory (htaccess) RewriteRule directives that substitute a relative path.

This directive is required when you use a relative path in a substitution in per-directory (htaccess) context unless either of the following conditions are true:

The original request, and the substitution, are underneath the DocumentRoot (as opposed to reachable by other means, such as Alias).
The filesystem path to the directory containing the RewriteRule, suffixed by the relative substitution is also valid as a URL path on the server (this is rare).
In the example below, RewriteBase is necessary to avoid rewriting to http://example.com/opt/myapp-1.2.3/welcome.html since the resource was not relative to the document root. This misconfiguration would normally cause the server to look for an "opt" directory under the document root.

DocumentRoot /var/www/example.com
Alias /myapp /opt/myapp-1.2.3

RewriteEngine On
RewriteBase /myapp/
RewriteRule ^index\.html$  welcome.html 


    
por 23.02.2017 / 05:47

Tags