GoDaddy: переписать секунду в.htaccess не работает с "началом строки" (^)
У меня есть .htaccess
, содержащий RewriteCond
и RewriteRule
.
Раньше он работал просто отлично (прошло много времени с тех пор, как я в последний раз проверял), но теперь он перестал работать. Я сузил его до следующего примера.
Предположим, я хочу перенаправить www.mydomain.com/foo
, но не тогда, когда foo
встречается где-либо еще; так, например, не перенаправляйте, если URI /abc/foo
, /abcfoo
, или /foobar
.
Вот мой текущий .htaccess
файл:
Options -Indexes +FollowSymLinks -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/foo$
RewriteRule . /redirect.html [last,redirect=temp]
Я попытался изменить ^/foo$
в разными способами, но я не могу заставить это работать.
Следующие все работают, как и ожидалось:
foo Redirects wherever foo appears, e.g. /abcfoobar
foo$ Redirects whenever foo appears at the end, e.g. /abc/defoo
/foo Redirects whenever /foo appears, e.g. /abc/foobar
/foo$ Redirects whenever /foo appears at the end, e.g. /abc/foo
Следующее всегда возвращает 404 Не найдено , независимо от того, что я указываю в качестве URI.
^foo
^/foo
^/foo$
Я не знаю, что происходит.
Пожалуйста, помогите мне исправить это. На случай, если это поможет, я использую хостинг GoDaddy.
2 answers
Я не уверен, в чем проблема в вашем случае (я протестировал ваш фрагмент кода, и он работает так, как ожидалось), но, возможно, это сработает для вас:
RewriteEngine On
RewriteRule ^foo$ /redirect.html [redirect=temp,last]
Я не эксперт по.htaccess, но я думаю, что это было бы даже быстрее, потому что шаблон RewriteRule
обрабатывается до RewriteCond
.
Я только что нашел решение! Похоже, это что-то особенное.
Домены в GoDaddy хранятся во вложенных папках; например, mydomain.com
могут храниться во вложенной папке, называемой md
.
Любопытно, что начало %{REQUEST_URI}
включает в себя эту строку. Поэтому моя вторая запись должна была гласить:
RewriteCond %{REQUEST_URI} ^/md/foo$
Это не требуется, если строка не обязательно начинается с начала. Это объясняет мои странные результаты.
Я отредактировал свой заголовок, чтобы показать, что это применимо специально для GoDaddy, в надежде, что это поможет кому-то другому.