JoomlaCamp 2018 Essen - 03.02.2017 in Essen

htaccess weiterleitung bzw. Seiten sollen nicht aufrufbar sein.

    htaccess weiterleitung bzw. Seiten sollen nicht aufrufbar sein.

    Hallo
    mein Problem geht schon ein wenig ans Eingemachte und mit einem redirect 301 ist es leider auch nicht lösbar.

    Auf meiner Seite gab es eine durch K2 ausgewählte Seitennummerierung. Also die aktuellsten 10 Artikel sind auf der Startseite die älteren sind darunter über seite 2 , 3 usw. anklickbar.

    SEf urls ist aktiv, url rewrite auch. htaccess ist umbenannt. alles funktioniert.

    Nun hat sich ein Anzeigenpartner gemeldet, der nur eine/seine Werbung für die Startseite haben will, also "einen" ausgehenden Link, dass sein diagnose tool ihm hunderte von Seiten ausgibt. Alle nach der Methode: meindedom.de/?start=10 usw. Ich kann jeden Wert angeben solange ich Artikel haben und das geht bis 2008 zurück und ich kann diese Seite dann in der Aufmachung der Startseite sehen, mit allen nur für die Startseite aktivierten Modulen.

    Diese Links waren nie verbaut oder in einem Menü. Mittlerweile habe ich auch die Seitennummerierung von der Startseite genommen. Um ältere Artikel zu lesen muss man nun über andere Menüeinträge gehen.
    Aber die Links funktionieren immer noch mit Ziel auf die Startseite.

    Sowohl dieser art
    meinedom.de/index.php?start=936
    oder wie halt oben beschrieben
    meinedom.de/?start=936

    Das beides geht liegt wohl der mod Rewrite geschichte und der Darstellung der seiten ohne index.php und der SEF.

    Nun dachte ich mir machste einfache ein 301 Umleitung über die htaccess und gut ist. von wegen. Interessiert joomla gar nicht.

    Ich finde nirgends Lösungen oder rauch nur Ansätze hierzu und darum bin ich nun hier.
    Kann mir jemand weiterhelfen?
    Vielen Dank!
    Gruß Litho
    Hi,
    probiert hatte ich folgendes.
    #
    RewriteRule ^start=.* / [R=301,L]
    RedirectMatch 301 ^/?start=**$ snookermania.de/
    Redirect 301 /index.php?start=936 snookermania.de/

    aber wie gesagt ging nicht.
    Die Anzeige ist ein Textlink der in einem Modul (nur Startseite) steht. Aber solage dieses auch jedes mal bei den Seitaufrufen mit angezeigt wird löst das nicht mein Problem.


    Quellcode

    1. ​##
    2. # @package Joomla
    3. # @copyright Copyright (C) 2005 - 2017 Open Source Matters. All rights reserved.
    4. # @license GNU General Public License version 2 or later; see LICENSE.txt
    5. ##
    6. ##
    7. # READ THIS COMPLETELY IF YOU CHOOSE TO USE THIS FILE!
    8. #
    9. # The line 'Options +FollowSymLinks' may cause problems with some server configurations.
    10. # It is required for the use of mod_rewrite, but it may have already been set by your
    11. # server administrator in a way that disallows changing it in this .htaccess file.
    12. # If using it causes your site to produce an error, comment it out (add # to the
    13. # beginning of the line), reload your site in your browser and test your sef urls. If
    14. # they work, then it has been set by your server administrator and you do not need to
    15. # set it here.
    16. ##
    17. ## No directory listings
    18. <IfModule autoindex>
    19. IndexIgnore *
    20. </IfModule>
    21. ## Can be commented out if causes errors, see notes above.
    22. Options +FollowSymlinks
    23. Options -Indexes
    24. ## Mod_rewrite in use.
    25. RewriteEngine On
    26. RewriteCond %{HTTP_HOST} !^www\.snookermania\.de$
    27. RewriteRule ^(.*)$ http://www.snookermania.de/$1 [L,R=301]
    28. ## Begin - Rewrite rules to block out some common exploits.
    29. # If you experience problems on your site then comment out the operations listed
    30. # below by adding a # to the beginning of the line.
    31. # This attempts to block the most common type of exploit `attempts` on Joomla!
    32. #
    33. # Block any script trying to base64_encode data within the URL.
    34. RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
    35. # Block any script that includes a <script> tag in URL.
    36. RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
    37. # Block any script trying to set a PHP GLOBALS variable via URL.
    38. RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
    39. # Block any script trying to modify a _REQUEST variable via URL.
    40. RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
    41. # Return 403 Forbidden header and show the content of the root home page
    42. RewriteRule .* index.php [F]
    43. #
    44. ## End - Rewrite rules to block out some common exploits.
    45. ## Begin - Custom redirects
    46. #
    47. # If you need to redirect some pages, or set a canonical non-www to
    48. # www redirect (or vice versa), place that code here. Ensure those
    49. # redirects use the correct RewriteRule syntax and the [R=301,L] flags.
    50. #
    51. ## End - Custom redirects
    52. ##
    53. # Uncomment the following line if your webserver's URL
    54. # is not directly related to physical file paths.
    55. # Update Your Joomla! Directory (just / for root).
    56. ##
    57. # RewriteBase /
    58. ## Begin - Joomla! core SEF Section.
    59. #
    60. RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    61. #
    62. # If the requested path and file is not /index.php and the request
    63. # has not already been internally rewritten to the index.php script
    64. RewriteCond %{REQUEST_URI} !^/index\.php
    65. # and the requested path and file doesn't directly match a physical file
    66. RewriteCond %{REQUEST_FILENAME} !-f
    67. # and the requested path and file doesn't directly match a physical folder
    68. RewriteCond %{REQUEST_FILENAME} !-d
    69. # internally rewrite the request to the index.php script
    70. RewriteRule .* index.php [L]
    71. #
    72. ## End - Joomla! core SEF Section.

    Quellcode

    1. RewriteCond %{REQUEST_URI} ^/$
    2. RewriteCond %{QUERY_STRING} ^start=\d+(&|)
    3. RewriteRule .* /? [R=301,NC,L]

    Query-String muss mit start=[Zahl] beginnen. Das Fragezeichen in letzter Zeile ist wichtig, sonst endlosredirect

    Zusätzlich kannst in Google Console URL-Parameter ignorieren lassen. Hängt nat. davon ab, ob sie anderswo nicht Sinn machen.

    Kann man bei K2 die Anzahl anzuzeigender Beiträge nicht limitieren, so, dass ein Beitrag 960 gar keinen Sinn macht? Nur so eine Idee. Klingt ja irgendwie nach einem Blog-Layout oder so was.
    Joomla-Fachmann: ghsvs.de
    Gepriesen und gedankt. Das tut es endlich und gleich auf Anhieb!!! Gratulation und dank.

    Kannst du mir auch sagen wie ich diese umleiten kann
    meindom.de/indey.php?start=123456

    kann ich das kopieren und das Fragezeichen durch ein ^? ersetzen?
    also so?
    RewriteCond %{REQUEST_URI} ^/$
    RewriteCond %{QUERY_STRING} ^index.php^?start=\d+(&|)
    RewriteRule .* /? [R=301,NC,L]

    und ja man kann bei K2 die Anzahl der Artikel pro seite reglementieren und auch die Seitennummerierung weglassen. Ich denke nur Tante G ist nicht doof. und wenn die einmal sehen dass es mit dem Code geht dann dann testen die aus...

    litho schrieb:

    und wenn die einmal sehen dass es mit dem Code geht dann dann testen die aus...

    Im Normalfall nicht. Aber viele Seiten haben ja Ecken (Schleichwege), bspw. über die Breadcrumbs, ARchiv-Views, wo Suchmaschinen auf solche Links geführt werden oder doofe, nicht kontrolleirte Sitemaps. Kann nat. sein, dass G mittlerweile ob seines beschäftigungstherapeutischen Auftrags komplett ausgetickt ist. Bei mir konnte ich das aber noch nicht anhand G-Index beobachten.

    Wenn du start generell ausschließen willst, brauchst du die erste Zeile meines Codes oben (RewriteCond %{REQUEST_URI}) gar nicht.

    Wenn genau dein weiteres Muster getroffen werden soll

    Quellcode

    1. RewriteCond %{REQUEST_URI} ^/index.php$
    2. RewriteCond %{QUERY_STRING} ^start=\d+(&|)
    3. RewriteRule .* /? [R=301,NC,L]

    Bin nicht ganz sicher, ob erste Zeile den / braucht oder nicht.

    REQUEST_URI ist immer der Teil vor dem ?
    QUERY_STRING immer der Teil hinter dem ?
    In letzter Zeile dient im Unterschied das ? als Marker, dass der QueryString nicht an die neue URL weitergereicht werden soll.

    In den ersten beiden Zeilen hätte ein Fragezeichen eine andere Bedeutung als ? ; sozusagen. Wird meist als sog. Quantor des regulären Ausdrucks interpretiert (Das wollte ich schon immer mal in einem Forum schreiben ;) Wichtig-wichtig-tu.).

    Das Dacherl in einem regulären Ausdruck bedeutet "fängt exakt so an". Das $ bedeutet "endet exakt so".
    Also nur, wenn vor dem Querystring-Separator-Fragezeichen der URL exakt /index.php steht und nicht etwa /index.php/diese-Seite/blubb matcht das Muster.

    Joomla-Fachmann: ghsvs.de

    Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von „Re:Later“ ()

    lege Deine Hände auf die Tastatur und spüre die wäre meines aufrichtigen dankes!
    Es tut es sogar viel zu gut.
    Nun nimmt er auch die Unterseiten mit.
    also
    meinedom.de/international/?start=123
    werden nun auch auf die Startseite geschickt, obwohl da die Seitennummerierung erwünscht ist...
    Das hat er jetzt aber erste gemacht als ich den zweiten Codeschnipsel eingebaut hatte meine. ich teste nochmal.
    Also test gemacht.
    der "/" den braucht es. (Es passiert sonst gar keine Umleitung)

    damit ist aber auch der Umleitung total Egal was vor dem Slash steht. also Unterverzeichnisse wie /national/ werden ignoriert und umgeleitet.
    Wenn ich dem String jetzt nur noch beibringen könnte das er dass nur im Hauptverzeichnis macht dann wäre es genau richtig.
    Weiß jetzt nicht welche du genommen hast

    Quellcode

    1. RewriteCond %{REQUEST_URI} ^/$
    2. RewriteCond %{QUERY_STRING} ^start=\d+(&|)
    3. RewriteRule .* /? [R=301,NC,L]


    leitet um:
    https://example.org/?start=12
    https://example.org?start=12

    aber nicht:
    https://example.org/content-component?start=12
    https://example.org/content-component/?start=12

    Ein zusätzliches

    Quellcode

    1. RewriteCond %{REQUEST_URI} ^/index.php$
    2. RewriteCond %{QUERY_STRING} ^start=\d+(&|)
    3. RewriteRule .* /? [R=301,NC,L]


    leitet um:
    https://example.org/index.php?start=12

    aber nicht:
    https://example.org/index.php/?start=12
    https://example.org/index.php/content-component?start=12
    https://example.org/index.php/content-component/?start=12

    Man könnte beide auch in einem Block kombinieren. Hab ich aber keine Lust ;)

    Du musst exakte Beispiel-URLs posten, wo es nicht klappt. Also so wie ich. "URLs automatisch erkennen" im erweiterten Editor deaktivieren.
    Joomla-Fachmann: ghsvs.de
    Beim ersten Quellcode bin ich ganz bei Dir.
    beim zweiten

    Quellcode

    1. RewriteCond %{REQUEST_URI} ^/index.php$RewriteCond %{QUERY_STRING} ^start=\d+(&|)RewriteRule .* /? [R=301,NC,L]


    leitet um:

    example.org/index.php?start=12

    aber auch diese
    leitet um: example.org/subfolder/?start=12
    und das sollte es nicht tun.
    siehe
    snookermania.de
    snookermania.de/national/?start=10

    Warum auch immer nach dem Hinzufügen der Zeilen mit der Index.php werden die Seiten aus einem subfolder nur mit ?start= auch umgeleitet.

    Und wenn es Deine Lust irgendwie beflügelt können wir da auch gerne kostenpflichtigen Support daraus machen. Ich weiß Deine Arbeit hier zu schätzen.

    litho schrieb:

    Warum auch immer nach dem Hinzufügen der Zeilen mit der Index.php werden die Seiten aus einem subfolder nur mit ?start= auch umgeleitet.

    Ja, hast recht. Das kollidiert mit den Joomla-Zeilen unterhalb "## Begin - Joomla! core SEF Section.". Ändert auch andere Reihenfolge und Umformulieren nichts.

    Würde ich mir also für diesen Fall ein Plugin schreiben, das mit JUri in onAfterRoute arbeitet.
    Joomla-Fachmann: ghsvs.de

forum.joomla.de is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters the trademark holder in the United States and other countries.