2017-09-28 6 views
1

J'ai un RewriteRule htaccess qui affiche l'url auth/register.php comme /register comme ceci:htaccess redirect infini redirect

RewriteCond %{REQUEST_URI} register 
RewriteRule ^register/?$ /auth/register.php [NC,L] 

Cependant, maintenant, quand quelqu'un tape manuellement auth/register.php dans la fenêtre du navigateur, je dois vous assurer qu'ils voient /register à la place. J'utilisais

Redirect /auth/register.php /register 

Mais évidemment, cela crée une boucle de redirection infinie. Des idées sur la façon dont je peux faire en sorte que toutes les tentatives pour aller à /auth/register.php vont à /register mais il affiche toujours le contenu de la auth/register.php sans rediriger pour toujours? Merci!

+0

Je commencerais à chercher 'var_dump ($ _ SERVER)' pour trouver s'il y a des propriétés appropriées auxquelles vous pouvez appliquer une logique. – Scuzzy

Répondre

0

Vous devez écrire un alias.

Ici, RewriteRule vous redirigera toujours vers le nouvel URL. Donc, en utilisant cela, vous pouvez REDIRECT à /auth/register.php. Vous avez également écrit une règle de redirection qui redirige vers /register. Donc, ceci est une boucle infinie de ces deux redirections.

code

qui devrait être écrit est

Alias /register /auth/register.php 

cela ne devrait pas être écrit dans le fichier .htaccess. Il doit être écrit dans hôte virtuel fichier de votre site

Il ressemble à ce

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    DocumentRoot /var/www/html 
    ErrorLog ${APACHE_LOG_DIR}/error.log 
    CustomLog ${APACHE_LOG_DIR}/access.log combined 

    Alias /register /auth/register.php //Add this line only donot disturb any other lines 


</VirtualHost> 

Dans votre fichier .htaccess ne comprennent cette ligne

Redirect /auth/register.php /register 

Don » t inclure

RewriteCond %{REQUEST_URI} register 
RewriteRule ^register/?$ /auth/register.php [NC,L]