У меня есть сайт Zend Framework в этом каталоге /var/www/example.com/
и я поместил блог WP в этом каталоге /var/www/example.com/public/blog/
Ниже перечислены важные файлы ...
/var/www/example.com/public/.htaccess
содержит:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^blog - [NC,L] #Just added this line, it was previous not there
RewriteRule ^.*$ index.php [NC,L]
Тогда мой .htaccess
в папке /blog/
выглядит так:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>
# END WordPress
Щелчок по сайту Zend работает нормально.Переход в / blog / подпапку загружает блог WP просто отлично.Но когда я нажимаю на любое сообщение в блоге, оно перенаправляется в приложение ZF и не остается в WordPress.
Конечный результат, за которым я гоняюсь, - это сохранить два отдельных, но убедитесь, что обаиз них переписать index.php, чтобы он не отображался в URL.
У меня нет хорошего опыта работы с htaccess, поэтому я не уверен, что происходит.Вот мой VHost просто для примера.
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host2.example.com
DocumentRoot "/var/www/example.com/public"
ServerName example.com
ErrorLog "logs/example.local-error.log"
CustomLog "logs/example.local-access.log" common
<Directory "/var/www/example.com/public" >
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
</Directory>
<Location />
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !\.(js|ico|gif|jpg|png|css)$ /index.php
</Location>
SetEnv APPLICATION_ENV development
</VirtualHost>
NOTE Я удалил .htaccess в папке /public/
для тестирования из-за правила перезаписи в VHost, но моя проблемаостается.
URL-адреса запросов и ответов совпадают с отображаемыми в браузере:
http://example.local/blog/my-test-blog-post/
ОДНАКО браузер выдает ошибку от ZF, указывая, что она была направлена на public/index.php
файл вместо предполагаемого public/blog/index.php
файла.Я также использовал Netbeans & XDebug для пошагового выполнения кода.Я помещаю точку останова в первую строку обоих файлов index.php, и, нажимая на ссылку в блоге, он сразу загружает ZF index.php, а не /blog/index.php
Появляется, еслииспользуйте URL-адрес, такой как http://example.local/blog/?p=695
, он работает и не направляется в приложение ZF.но когда я использую пользовательские постоянные ссылки в wp-admin, такие как http://example.local/blog/my-test-blog-post/
, он пытается перенаправить на ZF.
При просмотре Google показывает, что htaccess в папке /blog/
неверен.Options FollowSymLinks
и AllowOverride All
оба установлены.Я просто не могу понять это правильно ... http://wordpress.org/support/topic/custom-permalinks-not-working-1
Я также добавлю, что mod_rewrite работает, потому что я могу просто щелкнуть через приложение ZF.
Какпоследнее замечание, эта постоянная ссылка работает на WP:
/index.php/%post_id%/%postname%/
Но я хочу использовать это без индексного файла: /%post_id%/%postname%/
mod_rewrite log:
1(2) init rewrite engine with requested uri /blog/698/test-blog-post/
(1) pass through /blog/698/test-blog-post/
(3) [perdir /] add path info postfix: D:/www/example/public/blog/698 -> D:/www/example/public/blog/698/test-blog-post/
(3) [perdir /] applying pattern '\.(js|ico|gif|jpg|png|css)$' to uri 'D:/www/example/public/blog/698/test-blog-post/'
(4) [perdir /] RewriteCond: input='D:/www/example/public/blog/698' pattern='!-f' => matched
(4) [perdir /] RewriteCond: input='D:/www/example/public/blog/698' pattern='!-d' => matched
(2) [perdir /] rewrite 'D:/www/example/public/blog/698/test-blog-post/' -> '/index.php'
(2) [perdir /] trying to replace prefix / with /
(5) strip matching prefix: /index.php -> index.php
(4) add subst prefix: index.php -> /index.php
(1) [perdir /] internal redirect with /index.php [INTERNAL REDIRECT]
(2) init rewrite engine with requested uri /index.php
(1) pass through /index.php
(3) [perdir /] applying pattern '\.(js|ico|gif|jpg|png|css)$' to uri 'D:/www/example/public/index.php'
(4) [perdir /] RewriteCond: input='D:/www/example/public/index.php' pattern='!-f' => not-matched
(1) [perdir /] pass through D:/www/example/public/index.php
Другой журнал mod_rewrite Попробовав предложение Джейсона Дина (не сработало)
(2) init rewrite engine with requested uri /blog/698/test-blog-post/
(1) pass through /blog/698/test-blog-post/
(3) [perdir /] add path info postfix: D:/www/example/public/blog/698 -> D:/www/example/public/blog/698/test-blog-post/
(3) [perdir /] applying pattern '\.(js|ico|gif|jpg|png|css)$' to uri 'D:/www/example/public/blog/698/test-blog-post/'
(4) [perdir /] RewriteCond: input='D:/www/example/public/blog/698' pattern='!-f' => matched
(4) [perdir /] RewriteCond: input='D:/www/example/public/blog/698' pattern='!-d' => matched
(2) [perdir /] rewrite 'D:/www/example/public/blog/698/test-blog-post/' -> '/index.php'
(2) [perdir /] trying to replace prefix / with /
(5) strip matching prefix: /index.php -> index.php
(4) add subst prefix: index.php -> /index.php
(1) [perdir /] internal redirect with /index.php [INTERNAL REDIRECT]
(2) init rewrite engine with requested uri /index.php
(1) pass through /index.php
(3) [perdir /] applying pattern '\.(js|ico|gif|jpg|png|css)$' to uri 'D:/www/example/public/index.php'
(4) [perdir /] RewriteCond: input='D:/www/example/public/index.php' pattern='!-f' => not-matched
(1) [perdir /] pass through D:/www/example/public/index.php