Különböző eredményeket, amikor üzembe kódot .htaccess képest httpd.conf

szavazat
1

Adódtak ez a darab a kódot egy .htaccess fájlt:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?pic=$1

Melyik pontosan mit akarok csinálni. Ha meglátogatom mydomain.com/345 lenne ugyanaz, mintha volna gépelt mydomain.com/index.php?pic=345 és print_r ($ _ GET) értéke a következő:

Array ( [pic] => 345 )

Azonban, ha megpróbálom, hogy ezt pontosan kódot én előrefordított conf fájl helyett egy .htaccess fájlt, visszatér a teljes belső fájl elérési útja helyett, beleértve a $ _GET paraméter, mint például:

Array ( [pic] => var/www/mydomain.com/htdocs/345 )

Persze, én is csak letölteni az utolsó része, hogy a húr, vagy teszik használja REQUEST_URI, hogy az adatokat, de ez nem lenne kérdésének megoldása, csak mozog körülötte. Bárki, aki tudja, hogy miért csinálja ezt? Gondolom, hogy köze van az a tény, hogy összeállítása a pálya belső?

Íme a teljes conf fájlt, ha szükség van rá, én csak akkor kapcsol ki a domain nevet, hogy tartsa kissé semleges. :-)

<VirtualHost *:80>
    ServerAdmin info@mydomain.com
    ServerName mydomain.com

    # Indexes + Directory Root
    DirectoryIndex index.php
    DocumentRoot /var/www/mydomain.com/htdocs/

    # CGI Directory
    ScriptAlias /cgi-bin/ /var/www/mydomain.com/cgi-bin/
    <Location /cgi-bin>
            Options +ExecCGI
    </Location>

    # Logfiles
    ErrorLog /var/www/mydomain.com/logs/error.log
    CustomLog /var/www/mydomain.com/logs/access.log combined

    <Location />
           RewriteEngine On
           RewriteCond %{REQUEST_FILENAME} !-f
           RewriteCond %{REQUEST_FILENAME} !-d
           RewriteRule ^(.*)$ index.php?pic=$1
    </Location>
</VirtualHost>

EDIT

I „megoldotta” kicserélésével:

<Location />

ezzel:

<Directory /var/www/mydomain.com/htdocs>

Azonban én még mindig kíváncsi, hogy miért <Location /> nem működik, valakinek ötlete?

A kérdést 12/06/2011 13:25
a forrás felhasználó
Más nyelveken...                            


1 válasz

szavazat
1

A legutóbbi (apache 2.2) dokumentálása mod_rewrite most világosan jelölje Location irányelvek alkalmazását kerülni kell (keresés helyét az oldalon). Láthatjuk néhány érdekes maileket, hogy a felhasználók httpd levelezőlistán . De ez nem volt megállapítható például a 2.0 dokumentációban .

Bár átírási szabályok szintaktikailag megengedett és szakaszok, ez soha nem szükséges és nem támogatott.

Tehát úgy tűnik, te egy titokzatos kiszámíthatatlan módon működik mod-rewrite, ami minden bizonnyal egy félelmetes hellyé. Köszönjük, hogy ezt a kérdést már én is tisztában vagyok :-)

Válaszolt 12/06/2011 14:30
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more