2017-02-06 2 views
0

Я использую htaccess для перезаписи каждого запроса в файл default.php.переписать все запросы к default.php, кроме запроса sitemap.xml

Options -Indexes 

RewriteEngine On 
RewriteRule^blog/default.php 

Но я хочу представить карта сайта файл моего сайта (sitemap.xml) Так, что запрос на http://example.com/sitemap.xml rewrites to -> blog/sitemap.xml.

Мои безуспешными пытаясь угадать>

Options -Indexes 

RewriteEngine On 
RewriteRule ^sitemap.xml blog/sitemap.xml 
RewriteRule^blog/default.php 

Мои правила HTAccess, очевидно, не закаленные. Но я новичок в этом. Пожалуйста, помогите.

+0

'Перенаправление 301 /sitemap.xml/блог/sitemap.xml'? –

+0

Что делать, если вы переместили файл Sitemap в конце, что он делает для вас? –

ответ

0

Я думаю, вы можете использовать RewriteBase, чтобы уменьшить путь к директории блога. Попробуйте что-то вроде:

RewriteEngine On # enable rewrite engine 
RewriteBase /blog/ # Set path "./blog" as a root 
RewriteCond %{REQUEST_FILENAME} !-f # Excludes existed files from rewrite 
RewriteCond $1 !^(default\.php|sitemap\.xml) # Setup $1 variable 
RewriteRule ^(.*)$ default.php/$1 [L] # Process request params to default.php 
0

Правила пока прекрасны, хотя, я думаю, вы получите цикл перезаписи. Для того, чтобы избежать петли, вы можете префикс правила с условием переписывания, который пропускает правило, когда requesst для реального файла

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^sitemap.xml$ /blog/sitemap.xml [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule^/blog/default.php [L] 
Смежные вопросы