настроить URL с помощью правила перезаписи в .htaccess

Основной вопрос, для которого я изо всех сил пытаюсь найти решение.

У меня есть URL www.example.com/signup/form.html я хотел бы переписать URL как www.example.com/signup удаление form.html из URL-адреса, но по-прежнему непосредственно в этот HTML-файл.

Я попытался sulotion к этому, у меня есть .htaccess файл в моем корне с RewriteEngine on,

по какой-то причине на секунду он загружается как www.example.com/signup и вдруг перенаправляет на 404 — страница не найдена.

Это то, что я сейчас использую (не работает):

RewriteRule ^signup/form.html.*$ http://www.example.com/signup/ [R=301,L]

Также попробовал это:

RewriteRule ^signup/(.*)$ http://www.example.com/signup [R=301,L]

Также у меня есть это в верхней части моего файла .htaccess, это может быть причиной того, что я получаю 404?

<Files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</Files>
<Files ~ "^.ht">
Order allow,deny
Deny from all
</Files>
<Files .htaccess>
order allow,deny
deny from all
</Files>
<Files ~ "includes$">
Order allow,deny
Deny from all
</Files>
<Files ~ "mods$">
Order Deny,Allow
Deny from all
</Files>
php_flag session.use_trans_sid off
php_flag error_reporting off
Options -Indexes
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
FileETag none
ExpiresActive On
ExpiresDefault A0
ExpiresByType image/gif A2592000
ExpiresByType image/png A2592000
ExpiresByType image/jpg A2592000
ExpiresByType image/jpeg A2592000
ExpiresByType image/ico A2592000
ExpiresByType text/css A2592000
ExpiresByType text/javascript A2592000

<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
Header set Expires "Thu, 15 Jan 2035 20:00:00 GMT"</FilesMatch>

ErrorDocument 404 /notfound

DirectoryIndex index.php
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]Redirect 301 /default.aspx http://www.example.com
Redirect 301 /home.asp http://www.example.com

Redirect 301 /contact.aspx http://www.example.com/contact/enquire
Redirect 301 /awards.aspx http://www.example.com/awards
Redirect 301 /event.asp http://www.example.com/visitus/events

Redirect 301 /social.aspx http://www.example.com/visitus/events
Redirect 301 /recipes.aspx‎ http://www.example.com/news/09/recipes
Redirect 301 recipes.aspx‎ http://www.example.com/news/09/recipes
Redirect 301 /recipes.asp http://www.example.com/news/09/recipes
Redirect 301 recipes.asp http://www.example.com/news/09/recipes
Redirect 301 /styles http://www.example.com/Redirect 301 /home.asp?pid=24&page=4 http://www.example.com
Redirect 301 /home.asp?pid=13&page=2 http://www.example.com
Redirect 301 /home.asp?pid=42&page=3 http://www.example.com
Redirect 301 /home.asp?pid=12&page=1 http://www.example.com
Redirect 301 /home.asp?pid=71&page=3 http://www.example.com
Redirect 301 /event.asp?pid=30&page=2 http://www.example.com/visitus/events
Redirect 301 /event.asp?pid=63 http://www.example.com/visitus/eventsRewriteRule ^pg([0-9]+)$ index.php?content=page&id=$1
RewriteRule ^([a-z]+)-pg([0-9]+)$ index.php?content=$1&pg=$2
RewriteRule ^([a-z]+)-([0-9]+)$ index.php?content=$1&id=$2RewriteRule ^([a-z]+)/0([1-9]|[1-9]([0-9]+))/pg([0-9]+)/([a-z0-9\-\/]+)$ index.php?content=$1&cat=$2&pg=$4

RewriteRule ^([a-z]+)/0([1-9]|[1-9]([0-9]+))/([a-z0-9\-\/]+)$ index.php?content=$1&cat=$2
RewriteRule ^sitemap.xml sitemap.php

RewriteRule ^([a-z]+)-day-([0-9]{4})-([0-9]{2})-([0-9]{2})$ index.php?content=$1&view=day&y=$2&m=$3&d=$4
RewriteRule ^([a-z]+)-month-([0-9]{4})-([0-9]{2})$ index.php?content=$1&view=month&y=$2&m=$3
RewriteRule ^([a-z]+)-year-([0-9]{4})$ index.php?content=$1&view=year&y=$2

RewriteRule ^([a-z]+)-archs([0-9]+)$ index.php?content=$1&view=archives&pg=$2

RewriteRule ^images/lightbox-btn-next.gif images/lightbox-btn-next.png
RewriteRule ^images/lightbox-btn-prev.gif images/lightbox-btn-prev.png
RewriteRule ^images/lightbox-btn-close.gif images/lightbox-btn-close.png

DirectorySlash On
DirectoryIndex form.html

Я проводил исследования Вот на этом, но я не знаю, я изо всех сил пытаюсь получить правильный синтаксис.

1

Решение

Вы можете добиться этого с помощью этого:

RewriteEngine On
RewriteRule ^index\.html$ / [R=301,L]
RewriteRule ^(.*)/index\.html$ /$1/ [R=301,L]

Правило перезаписи проверяет любой запрос, который заканчивается /index.htmlи удаляет index.html немного, если таковые имеются.

Убедитесь, что вы очистили свой кэш перед тестированием.

РЕДАКТИРОВАТЬ:

Попробуйте также, это должно охватывать оба .html а также .php:

RewriteCond %{THE_REQUEST} \/index\.(php|html)\ HTTP [NC]
RewriteRule (.*)index\.(php|html)$ /$1 [R=301,L]
1

Другие решения

Я решил проблему так, как не хотел, но в любом случае, мой решение is .. добавил мой .html файл в корень (не в любом каталоге) и переименовал файл в signup.html и использовал .htaccess Rewrite для удаления .html

.htaccess (переписать)

 DirectoryIndex index.php
RewriteEngine on
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule !.*\.html$ %{REQUEST_FILENAME}.html [L]

Также добавлено перенаправление для любого человека, который уже имеет предыдущий адрес:

.htaccess (перенаправление)

Redirect 301 /signup/index.html http://www.exapmle.com/signup

Я действительно не хотел перемещать мой файл .html из подкаталога, но это было мое единственное решение, которое «работало».

1

Правильный синтаксис .htaccess для его получения:

RewriteRule ^/signup(.*)$ /signup/index.html [R=301,L]

Это означает, что оба / signup и / signup / будут перенаправлены в /signup/index.html

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector