Удалите “.html” из URL через .htaccess для веб-сайта WordPress

Справочная информация:

Я искал stackoverflow определенное решение и не мог найти то, которое зафиксировало мою ситуацию. Заранее спасибо за любую справку можно предложить. Ваше знание ценится.

Я решил принять, что контракт "преобразовывает" (в словах клиента) сайт Joomla в сайт WordPress. Все продвигается гладко, за исключением того, что сайт Joomla связывается с .html файлами, и в его навигации и в содержании 100 + сообщения.

Вместо того, чтобы пройти каждое сообщение один за другим и обновить ссылки или выполнить команду SQL для удаления ".html" из URL я решил оказать давление на .htaccess, которым я несколько доволен.


Что я пытаюсь сделать ↓

В WordPress мне включили пользовательские постоянные ссылки, и это следующие: / %category % / % постимени %

Вот пример того, на что похож один из старых URL в сообщениях:

http://the-site.com/category/the-webpage.html

Мне нужен htaccess файл, чтобы сказать веб-серверу удалять .html, таким образом, пользователь, после посещения "http://the-site.com/the-webpage.html" вместо этого отправляется в:

http://the-site.com/category/the-webpage

Я настраиваю тупики страницы для следования за именем файла страниц Joomla, таким образом, http://the-site.com/category/the-webpage будет работать.


Мой вопрос:

Можно ли помочь мне обнаружить решение к удалению .html от URL, когда кто-то посещает сайт, даже если файл HTML не существует на сервере?


Вот то, как .htaccess файл смотрел, прежде чем я внес изменения:

# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPress

Вот последний .htaccess файл по состоянию на Восточное 17:35:

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} \.html$
RewriteRule ^(.*)\.html$ $1 [R=301,L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress

↑latest .htaccess изменяет работу. Спасибо Tim!

7
задан Community 23 May 2017 в 12:01
поделиться

3 ответа

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

Весь .htaccess :

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} \.html$
RewriteRule ^(.*)\.html$ $1 [R=301,L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
13
ответ дан 6 December 2019 в 12:46
поделиться

Вы хотите использовать перезапись URL

RewriteEngine On
RewriteRule ^(.*)\.html$ $1
2
ответ дан 6 December 2019 в 12:46
поделиться

Это должно сделать это. Он перепишет запрос на site.com/category/whatever.html на site.com/category/whatever. он не должен зависеть от наличия запрашиваемого файла.

    <Directory /var/www/category>
        RewriteEngine on
        RewriteRule (.*)\.html$ /category/$1
    </Directory>

Это формат для apache2.conf или файлов виртуальных хостов. Не уверен, что вы используете эту команду в .htaccess. Лучше позаботиться об этом в server conf, если это возможно, так как он разбирается только один раз, при запуске сервера, а htaccess разбирается при каждом запросе.

1
ответ дан 6 December 2019 в 12:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: