Основной вопрос, для которого я изо всех сил пытаюсь найти решение.
У меня есть 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
Я проводил исследования Вот на этом, но я не знаю, я изо всех сил пытаюсь получить правильный синтаксис.
Вы можете добиться этого с помощью этого:
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]
Я решил проблему так, как не хотел, но в любом случае, мой решение 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 из подкаталога, но это было мое единственное решение, которое «работало».
Правильный синтаксис .htaccess для его получения:
RewriteRule ^/signup(.*)$ /signup/index.html [R=301,L]
Это означает, что оба / signup и / signup / будут перенаправлены в /signup/index.html