На моем веб-сайте wordpress есть удобные для поисковых систем URL-адреса, например http://mysite.com/mywebpage
. Я установил wordpress в свой /var/www
каталог.
Однако на моем сервере у меня также есть каталог с именем /var/www/mywebpage
потому что в этом каталоге хранятся такие файлы, как /var/www/mywebpage/product1.jpg
, /var/www/mywebpage/product2.jpg
и т.д...
Теперь каждый раз, когда я иду в http://mysite.com/mywebpage
, браузер выдает мне ошибку 403 Forbidden, потому что если существует каталог с тем же именем, что и страница wordpress, то каталог имеет приоритет. У меня есть еще несколько веб-каталогов, которые страдают от этой проблемы.
Как мне отредактировать мой файл .htaccess так, чтобы страница wordpress имела приоритет над следующими тремя каталогами: /var/www/mywebpage
, /var/www/myproductpage
и /var/www/mygraphics
.
Однако, если кто-то пойдет http://mysite.com/mywebpage/product1.jpg
, я хочу, чтобы они могли видеть файл физического изображения.
Вот мой текущий .htaccess из Wordpress.
# WORDPRESS Rules below, DO NOT EDIT!
#uploaded files
RewriteRule ^(.*/)?files/$ index.php [L]
RewriteCond %{REQUEST_URI} !.*wp-content/plugins.*
RewriteRule ^(.*/)?files/(.*) wp-content/blogs.php?file=$2 [L]
# add a trailing slash to /wp-admin
RewriteCond %{REQUEST_URI} ^.*/wp-admin$
RewriteRule ^(.+)$ $1/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule . - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-.*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
<IfModule mod_security.c>
<Files async-upload.php>
SecFilterEngine Off
SecFilterScanPOST Off
</Files>
Самый простой ответ (и более удобный в обслуживании в долгосрочной перспективе, не вдаваясь в подробности mod_rewrite
или mod_alias
черная магия) на самом деле не называть каталоги такими же, как ваши SEO-ссылки. Используйте что-нибудь вроде mywebpage_images
, myproductpage_images
и т.д. для этих каталогов.