Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [htaccess] Dopisanie .html na końcu urla
Forum PHP.pl > Forum > Przedszkole
djgarsi
Witam.
Mam krótkie pytanko odnośnie .htaccess'a.
W jaki sposób dopisać (301) do url'a frazę .html?

Mam linki typu domena.pl/blog-p14/tytul-artykulu
Chciałbym osiągnąć przekierowanie tego na domena.pl/blog-p14/tytul-artykulu.html

Jest to możliwe aby dać przekierowanie 301?
trueblue
Jest, ale musisz mieć fizycznie istniejące pliki .html lub przepisywanie adresów z .html w htaccess

  1. RewriteCond %{HTTP_HOST} domena.pl
  2. RewriteCond %{REQUEST_URI} ^/(.*)/(.*)
  3. RewriteRule .* /%1/%2.html [L,R=301]


lub tylko z adresu zawierającego /blog-p14/
  1. RewriteCond %{HTTP_HOST} domena.pl
  2. RewriteCond %{REQUEST_URI} ^/blog-p14/(.*)
  3. RewriteRule .* /blog-p14/%1.html [L,R=301]
djgarsi
A jeśli mam generowane dynamicznie linki np.
domena.pl/blog-p14/tytul-artykulu
domena.pl/blog-p16/tytul-artykulu-2
domena.pl/blog-p17/tytul-artykulu-3
domena.pl/blog-p18/tytul-artykulu-4
itd

Da się coś z tym zrobić?
Ogólnie chodzi o to żeby Google nie marudziło bo 404 będzie wywalać. W związku z tym trzeba by to przekierowanie zrobić.
trueblue
No, to musisz je generować z końcówką .html, a w htaccess zmienić przepisywanie przyjaznych URLi na nieprzyjazne (czyli dodać tam .html).

EDIT: A potem przekierowanie, które podałem wyżej, żeby nie było duplicate content. 404.
djgarsi
Wiem wiem. Obecnie już generuję je z końcówką .html. Jednak chciałbym zrobić przekierowanie z tych starych bo są zaindeksowane jeszcze bez końcówki. Wg mnie Google potraktuje te linki jako nowe i moc ich będzie budowana od zera.
trueblue
To właśnie, to co podałem w drugim poście z "bez .html" na ".html".
djgarsi
W Chrome wyrzuca że strona zawiera pętlę przekierowań.
A w Firefox dodaje z 10 razy .html.html.html.html itd
trueblue
To nie zależy od przeglądarki.

Pokaż jak wygląda cały htaccess.
djgarsi
Oto mój htaccess:

Kod
<IfModule mod_deflate.c>
    <IfModule mod_filter.c>
        AddOutputFilterByType DEFLATE text/css application/x-javascript text/x-component text/html text/richtext image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon
    </IfModule>
</IfModule>

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^domena.pl$
RewriteRule ^(.*)$ http://www.domena.pl/$1 [R=301,L]

RewriteRule ^blog.html$ index.php?page=blog [L,NC]
RewriteRule ^blog-p([0-9]*)/(.*).html$ index.php?page=blogpost&id=$1 [L,NC]

RewriteRule ^rss.xml$ rss/rss.php [L,NC]

ErrorDocument 404 /404.php
trueblue
Na razie masz tu przepisywanie z .html na nieprzyjazne.
Wygląda ok.
Może w kodzie masz przekierowania za pomocą header?
Po wpisaniu jakiego adresu wpada w pętlę?
djgarsi
Po dodaniu pierwszego lub drugiego kodu zachowuje się tak samo.
Wpisując domena.pl/blog-p16/tytul-artykulu-2 z i bez .html jest to samo.

Nie robiłem przekierowań za pomocą header.
trueblue
Ok, pokaż htaccess po zmianach.
djgarsi
Kod
<IfModule mod_deflate.c>
    <IfModule mod_filter.c>
        AddOutputFilterByType DEFLATE text/css application/x-javascript text/x-component text/html text/richtext image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon
    </IfModule>
</IfModule>

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^domena.pl$
RewriteRule ^(.*)$ http://www.domena.pl/$1 [R=301,L]

RewriteCond %{REQUEST_URI} ^/(.*)/(.*)
RewriteRule .* /%1/%2.html [L,R=301]

RewriteRule ^blog.html$ index.php?page=blog [L,NC]
RewriteRule ^blog-p([0-9]*)/(.*).html$ index.php?page=blogpost&id=$1 [L,NC]

RewriteRule ^rss.xml$ rss/rss.php [L,NC]

ErrorDocument 404 /404.php
trueblue
  1. RewriteCond %{REQUEST_URI} ^/(.*)/(.*)
  2. RewriteCond %{REQUEST_URI} !.html$
  3. RewriteRule .* /%1/%2.html [L,R=301]
djgarsi
Dziwne rzeczy się dzieją.
Po dodaniu tego kodu kody CSS przestały działać.
trueblue
  1. RewriteCond %{REQUEST_FILENAME} !-f
  2. RewriteCond %{REQUEST_FILENAME} !-d
  3. RewriteCond %{REQUEST_URI} ^/(.*)/(.*)
  4. RewriteCond %{REQUEST_URI} !.html$
  5. RewriteRule .* /%1/%2.html [L,R=301]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.