2

Я только что перестроил существующий сайт с нуля. Старый сайт использовал чистый HTML, в то время как новый сайт будет рисовать контент из базы данных. Теперь мне нужно перенаправить старые страницы в новую структуру URL, но я не знаю, как написать правила .htaccess для перенаправления файлов в файл.Что такое путь в .htaccess 301 Перенаправлять относительно?

Во всех примерах я ’ ве нашел, первая часть правила выглядит абсолютный путь к каталогу от корня, но они содержат только часть URL, который непосредственно следует имя домена.

Например, я хочу, чтобы перенаправить

https://garrettcounty.us/archives/12262011news.html 

в

https://garrettcounty.us/news/20111226/house-fire-on-christmas-day 

Из примеров, которые я ’ видел (как на StackOverflow и за рубежом), я предполагаю, что это правило будет

redirect 301 /archives/12262011news.html https://garrettcounty.us/news/20111226/house-fire-on-christmas-day 

, но фактический путь к исходному файлу на сервере:

/дома/имя пользователя /public_html/archives/12262011news.html

Должен ли я использовать путь к папке или путь от домена?

Я хотел бы иметь возможность использовать правило перезаписи. К сожалению, оригинальный разработчик Ждет ’ т использовать последовательные именование файлы схемы, так что я ’ м сталкивается с такими вещами, как

12262011news.html 
Jan-19-2012-Headlines.html 
State-Of-The-Union-25jan2012.html 

В новой модели, я предписывающее все через index.php с

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] 
</IfModule> 

, так что, если кто-нибудь знает более простой способ сопоставить все старые страницы с новыми URL-адресами, я хотел бы это услышать. Как бы то ни было, похоже, что я должен перенаправить 70+ страниц один за другим.

ответ

2

Ну, у вас старого URL-адреса нет заголовка новостей, поэтому, очевидно, mod_rewrite не может его создать. Однако для перенаправления

https://garrettcounty.us/archives/12262011news.html

в

https://garrettcounty.us/news/20111226/

вы можете использовать подобный код в ваш .htaccess:

Options +FollowSymLinks -MultiViews 
RewriteEngine on 
RewriteBase/

RewriteCond %{HTTPS} =on 
RewriteRule ^archives/(\d+)([^.]*)\.html$ https://garrettcounty.us/$2/$1/ [R=301,L,NC] 

Path используется в директивах переадресацией: Для mod_alias или mod_rewrite вы должны использовать путь относительно DOCUMENT_ROOT не полный путь к файловой системе.

+0

Новые URI будут принимать форму/раздел/дату/название-slug, где раздел может быть новостями, медицинскими, редакционными и т. Д. Датой всегда является YYYYMMDD по новой схеме.Некоторые из старых URL-адресов имеют заголовки, другие - нет. Это были всего лишь несколько примеров, которые я схватил. Я очень хорошо знаком с регулярными выражениями, но в старой схеме имен «схема» абсолютно нет согласованности. Я считаю, что переписать не может быть и речи. Мой основной вопрос: должен ли я использовать абсолютный путь к каталогу или путь из домена? Я смущен этой частью, поскольку все, что я нашел, немного неоднозначно. – Herbert

+0

Для mod_alias или mod_rewrite вам необходимо использовать путь от DOCUMENT_ROOT, а не полный путь к файловой системе. Вы правы, невозможно изменить правило перезаписи с такой несогласованностью в соглашении об именах. – anubhava

+1

Я предполагаю тогда, что путь относится к DOCUMENT_ROOT для «перенаправления». Эта небольшая часть информации пропала без вести с каждого того, что я читал. Спасибо вам за помощь anubhava. – Herbert