2015-11-26 46 views
12

Tôi đang cố gắng lưu trữ một trang web WordPress bên trong một dự án Laravel (5.1). Tôi có cấu trúc sau (bị tước một số)Laravel và Wordpress trên cùng một máy chủ/tên miền

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

Gốc tài liệu vhost là công khai.

Wordpress nên nắm bắt mọi thứ rơi qua .htaccess. Nhưng ví dụ/đăng nhập nên đi đến laravel. Khi dự án của tôi phát triển, tôi dự định bổ sung thêm các quy tắc để bắt các yêu cầu cho Laravel. Tôi có tệp .htaccess sau đây trong/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> 

Nhưng khi tôi yêu cầu/đăng nhập tôi vẫn kết thúc với trang wordpress. Đây là một phần của nhật ký:

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] 

Dường như việc viết lại không dừng lại ở cờ [L].

+0

Bạn nên kiểm tra Themosis: http://framework.themosis.com/ –

+0

Mặc dù đây là một đề xuất hay nhưng đây không phải là giải pháp khả thi. Phần Laravel đã được phát triển. –

Trả lời

0

Có thể thêm điều kiện ghi đè vào tệp Laravel .htaccess mặc định sẽ cho phép tất cả yêu cầu vào thư mục phụ (/ wordpress) bị Laravel bỏ qua.

<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> 
+0

Điều đó sẽ không giúp ích cho trường hợp của tôi. Vì url không nên chứa/wordpress. Ví dụ: {url}/login và {url}/portal nên được xử lý bởi laravel trong khi {url}/info và {url}/blog nên được xử lý bởi Wordpress. –

2

Như hỏi trong các bình luận, đây là câu trả lời:

Như bạn thấy trong nhật ký của mình điều kiện đầu tiên không phù hợp:

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

login/ không bắt đầu bằng /

Vì vậy, bạn cần thay đổi quy tắc thành

RewriteRule "^login/" "index.php" [L] 
Các vấn đề liên quan