mod_rewrite htaccess enable wordpress apache laravel mod-rewrite

wordpress - enable - mod_rewrite htaccess



Laravel y Wordpress en el mismo servidor/dominio (3)

Estoy tratando de alojar un sitio de WordPress dentro de un proyecto de Laravel (5.1). Tengo la siguiente estructura (desglosada)

├── app ├── config ├── public │   ├── index.php │   ├── wordpress -> ../wordpress │   └── .htaccess ├── resources ├── storage ├── vendor └── wordpress ├── index.php ├── wp-admin ├── wp-config.php ├── wp-includes    └── .htaccess

La raíz del documento vhost es pública.

Wordpress debe capturar todo lo que cae a través del .htaccess. Pero por ejemplo / login debería ir a laravel. Cuando mi proyecto crezca, pretendo agregar más reglas para atrapar las solicitudes de Laravel. Tengo el siguiente archivo .htaccess en / public:

<IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews </IfModule> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule "^/login" "index.php" [L] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule "^(.*)$" "wordpress/$1" [L] </IfModule>

Pero cuando realizo la solicitud / inicio de sesión todavía termino con la página wordpress. Aquí hay una parte del registro:

add path info postfix: /var/www/public/login -> /var/www/public/login/ strip per-dir prefix: /var/www/public/login/ -> login/ applying pattern ''^/login'' to uri ''login/'' add path info postfix: /var/www/public/login -> /var/www/public/login/ strip per-dir prefix: /var/www/public/login/ -> login/ applying pattern ''^(.*)$'' to uri ''login/'' RewriteCond: input=''/var/www/public/login'' pattern=''!-d'' => matched RewriteCond: input=''/var/www/public/login'' pattern=''!-f'' => matched rewrite ''login/'' -> ''wordpress/login/'' add per-dir prefix: wordpress/login/ -> /var/www/public/wordpress/login/ strip document_root prefix: /var/www/public/wordpress/login/ -> /wordpress/login/ internal redirect with /wordpress/login/ [INTERNAL REDIRECT]

Parece que la reescritura no se detiene en la bandera [L].


Como se preguntó en el comentario, aquí está la respuesta:

Como puede ver en sus registros, la primera condición no coincide:

applying pattern ''^/login'' to uri ''login/''

login/ no comienza con /

Entonces necesitas cambiar tu regla a

RewriteRule "^login/" "index.php" [L]


Es posible agregar una condición de reescritura al archivo Laravel .htaccess predeterminado que permitirá que Laravel .htaccess todas las solicitudes a un subdirectorio (/ wordpress).

<IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews </IfModule> RewriteEngine On # Ignore Wordpress directory RewriteCond $1 !^(wordpress) # Redirect Trailing Slashes... RewriteRule ^(.*)/$ /$1 [L,R=301] # Handle Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule>