AMcoder - javascript, python, java, html, php, sql

Վերահղեք domain.tld/index.php դեպի domain.tld (հեռացրեք index.php և ապա 301)

Ես Magento-ի տեղադրում ունեմ և մտածում էի, թե ինչպես կարող եմ domain.tld/index.php վերահղում դեպի domain.tld:

Ես ուզում եմ հեռացնել index.php-ը, իսկ հետո 301-ը վերադառնալ արմատին: Ես ունեմ շատ հին հղումներ, որոնք ինձ տալիս են կրկնօրինակ բովանդակություն և տգեղ url և այլն: Հին հղումի օրինակ.

domain.tld/index.php?controller=best_sales

.htaccess-ում ես ունեմ հետևյալը, և այն չի աշխատում

RewriteRule .* index.php [L]

շնորհակալություն :)


Խմբագրել:

Շնորհակալություն երկուսիդ էլ պատասխանների համար, բայց ես դեռ չեմ կարողանում այն ​​գործի դնել: Ես ստանում եմ 404 - Չգտնվեց, երբ փորձում եմ որևէ փոփոխություն կատարել:

Սա իմ ամբողջական .htaccess-ն է, միգուցե կան որոշ սխալներ կամ miss-configurations, որոնք չեն ստիպում այն ​​աշխատել:

Options +FollowSymLinks
RewriteEngine on    
RewriteBase /

// REMOVE HOME REWRITE FROM MAGENTO
RewriteRule ^home/?$ /? [R=301,L,NC]

// ADD WWW TO NONE WWW FOR BOTH HTTPS AND NONE HTTPS
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

// REDIRECT ALL .HTML FILES AND ALL .HTML/ FILES WITH TRAILING SLASH
RewriteRule ^google[0-9a-f]+.html$ - [L]
RewriteRule (.+)\.html$ /$1/ [L,R=301]
RewriteRule (.+)\.html\/$ /$1/ [L,R=301]

// ADD TRAILING SLASH
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

// TRAILING SLASH CHECK
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ $1/ [L,R=301]

// CHECK IF REDIRECT POINTS TO A VALID FILE
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

// SEND TO INDEX.PHP FOR CLEAN URLS
#RewriteRule ^(.*)$ index.php? /$1 [L,QSA]
#REWRITE EVERYTHING ELSE TO INDEX.PHP    
RewriteRule .* index.php [L]

Պատասխանները:


1

Պահպանեք այս կանոնը որպես ձեր առաջին կանոնը RewriteEngine On տողի տակ՝ index.php-ը ձեր URL-ից հեռացնելու համար:

DirectoryIndex index.php

RewriteEngine On
RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteRule ^(.*?)index\.php$ /$1 [L,R=302,NC,NE]
05.08.2014
  • Շնորհակալություն anubhava! Ստանալով 404, տեսեք իմ պատասխանը լրացուցիչ տեղեկությունների համար: 05.08.2014
  • Դուք .htaccess-ը չի ցուցադրում իմ առաջարկած կանոնը: Դուք պետք է տեղադրեք իմ առաջարկած կանոնը RewriteBase / տողից անմիջապես հետո: 05.08.2014
  • Թվում է, թե լավ է աշխատում :) Եթե ես ուզում եմ հեռացնել հարցաշարը, կարո՞ղ եմ որևէ կերպ ավելացնել i հարցական նշանը արմատի կտրվածքից հետո: Եվ եթե դա ինձ պարզապես անհրաժեշտ է արմատական ​​մակարդակում, և ոչ թե ենթագրքերում, հնարավո՞ր է դա: 06.08.2014
  • Այո, վերջում ավելացրեք հարցական նշան RewriteRule ^(.*?)index\.php$ /$1? [L,R=302,NC,NE]ի նման՝ հարցման տողը հանելու համար: Դուք կարող եք օգտագործել այս կանոնը նաև root .htaccess-ում: 06.08.2014
  • Նորից շնորհակալություն. Կանոնը նախատեսվում է գործարկել միայն root-ում, քանի որ ես վախենում եմ, որ հարցման տողերի հեռացումը կարող է կոտրել գործառույթներն ու url-ները ենթադիրեկտորիաներում: 06.08.2014
  • Այո, ճիշտ է, այդ դեպքում ավելի լավ է չհեռացնել հարցման տողը: 06.08.2014
  • Ուրեմն հնարավո՞ր է կանոնը փոխել ՄԻԱՅՆ փոխել, երբ գտնվում է root-ում, այլ ոչ թե ենթակատեգորիաներում: 06.08.2014
  • Այո, վստահ է, որ դա հնարավոր է անել՝ RewriteCond %{THE_REQUEST} \s+/index\.php [NC] միայն արմատական ​​նպատակային համար: 06.08.2014

  • 2

    Ես ենթադրում եմ, որ առանց որևէ կանոնների այն արդեն ցուցադրում է ձեր բովանդակությունը domain.tld/?controller=best_unicorns-ի համար: Եթե ​​url-ը հարցման տողից առաջ ավարտվում է 'index.php'-ով, դուք ցանկանում եք վերահղել դեպի այդ url առանց index.php: Փաստորեն, տիրույթի անվան և հարցման տողի միջև ընկած հատվածը պարունակում է միայն «index.php»:

    Դուք պետք է օգտագործեք R (վերահղման) դրոշը դրա համար.

    RewriteRule ^index\.php$ / [R,L]
    

    Ջնջեք ձեր մյուս փորձը: Եթե ​​այս կանոնն աշխատում է, փոխեք դրոշակները [R=301,L]՝ այն մշտական ​​դարձնելու համար: Այս կերպ և՛ բրաուզերները, և՛ որոնիչները գիտեն, որ պետք է փնտրել ընդամենը մեկ վայրում:

    05.08.2014
  • Շնորհակալություն Sumurai8: Ստանալով 404, տեսեք իմ պատասխանը լրացուցիչ տեղեկությունների համար: 05.08.2014
  • Համոզվեք, որ այս կանոնը նշված է որպես առաջին կանոն: Եթե ​​խնդիրը չվերանա, պարզեք, թե իրականում ինչ url է այն փորձում բեռնել սերվերի վրա: Պարզեք, թե դրա փոխարեն ինչ url պետք է բեռնվի: Իմ մոտեցումը, հավանաբար, անսահման հանգույց կառաջացնի ձեր վերջին կանոնի պատճառով, եթե այն չփոխարինեք DirectoryIndex index.php-ով: Anubhava-ի պատասխանը պետք է աշխատի, թեև դուք պետք է այն փոխարինեք մշտական ​​վերահղմամբ, երբ ամեն ինչ աշխատում է այնպես, ինչպես սպասվում էր: 05.08.2014
  • Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..