htaccess: раздеть расширение .html, если оно есть, переписать - PullRequest
0 голосов
/ 25 июня 2019

Мой htaccess застревает в бесконечном цикле. Я пытаюсь удалить расширение .html из URL-адреса, если таковой имеется, а затем использовать оставшуюся строку в качестве строки запроса.

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\.html\ HTTP/
RewriteRule ^(.*)\.html$ /$1 [R=302,L]

RewriteRule ^resources/blog$ /resources/blog/ [R=302,L,QSA]
RewriteRule ^resources/blog/$ resources/blog.php [L,QSA]
RewriteRule ^resources/blog/.*?([^\.\/]*)$ resources/blog.php?pname=$1 [L,QSA]

UPDATE:

Вот как это сидит в это время. Я прокомментировал некоторые вещи при устранении неполадок.

Options +SymLinksIfOwnerMatch -MultiViews

<IfModule mod_rewrite.c>

RewriteEngine On
RewriteBase /

#Redirect to URL without .html extension (Pretty URL)
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\.html\ HTTP/
RewriteRule ^(.*)\.html$ /$1 [R=302]

# Pretty url for Couch CMS blog
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^resources/blog/.*?([^\.\/]*)$ resources/blog.php?pname=$1 [L,QSA,END]

RewriteRule ^resources/blog$ /resources/blog/ [R=302,L,QSA]
RewriteRule ^resources/blog/$ resources/blog.php [L,QSA]

# RewriteRule ^resources/blog/([1-2]\d{3})/(?:(0[1-9]|1[0-2])/(?:(0[1-9]|1[0-9]|2[0-9]|3[0-1])/)?)?$ resources/blog.php?d=$1$2$3 [L,QSA]
# RewriteRule ^resources/blog/[^\.]*?([^/\.]*)/$ resources/blog.php?fname=$1 [L,QSA]
# RewriteRule ^resources/blog/[^\.]*?([^/\.]*)$ "$0/" [R=302,L,QSA]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+)$ $1.html [L,QSA]

</IfModule>

ОБНОВЛЕНИЕ 2

Структура файла следующая:

/
|-- static_html_files/
|-- resources/
|----- blog.php
|----- newsletter.html
|-- .htaccess
|-- index.html

Большинство файлов являются статическими, и их URL-адреса необходимо «предварительно подтвердить», удалив из них расширение .html, а затем перенаправив на симпатичный URL-адрес.

Блог.php также должен быть предварительно проверен, а сгенерированные ссылки Couch CMS должны быть переписаны. Правило перезаписи ссылок на couch cms - это то, которое продолжает работать.

ОБНОВЛЕНИЕ 3

Кажется, где-то есть перенаправление 301, но у меня нет 301 в моем htaccess? Не уверен, куда идти отсюда или где искать этот редирект. См. Результаты проверки перенаправления ниже:

https://xxxxx.ca/resources/blog/yyyyy

HTTP/1.1 301 Moved Permanently
Date: Tue, 25 Jun 2019 20:58:31 GMT
Server: Apache
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Set-Cookie: PHPSESSID=poplcjkqcgd4gk57c1l3lcdjg7; path=/
Location: https://xxxxx.ca/resources/blog/yyyyy.html
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8

https://xxxxx.ca/resources/blog/yyyyy.html

HTTP/1.1 302 Found
Date: Tue, 25 Jun 2019 20:58:31 GMT
Server: Apache
Location: https://xxxxx.ca/resources/blog/yyyyy
Content-Length: 263
Content-Type: text/html; charset=iso-8859-1

[RINSE & REPEAT AD NAUSEAM]

ОБНОВЛЕНИЕ 4

После некоторой отладки у меня возникает проблема с Apache с mod_rewrite и 'postfix' add path info ', которая обычно решается путем указания -MultiViews и / или добавления флага DPI к правилам, но ни одна из них, похоже, не решает какую-либо проблему. из моих проблем.

...