Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z plikiem .htaccess
stanley1984
post 19.10.2022, 13:56:54
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 12.02.2020

Ostrzeżenie: (0%)
-----


Witam otóż mój problem wygląda nastepująco. Na stronie index.php mam dwa odnośniki, z ktorych dane pobierane są z bazy danych:

1. <a href=".$row['mlink'].">".$row['miasto']."</a>
2. <a href=".$row['link'].">".$row['tytul']."</a>

Po kliknieciu w odnośnik przechodzimy do stron site.php gdzie wyswietla się zawartość. Plik .htacces zamienia mi tylko aby link wygladal na przyjazny czyli domena.pl/tytul, a nie domena.pl/site.php?link=tytul

Moj plik htaccess:

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule (.*) $1.php [L]

RewriteBase /
Options FollowSymLinks
RewriteCond %{HTTP_HOST} ^www.domena.pl(.*) [NC]
RewriteRule ^(.*)$ http://domena.pl/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.+)$ site.php?link=$1 [L]

Wszystko działa jeśli klikniemy w ten drugi link, jak klikam w ten pierwszy nic sie nie wyswietla, pytanie co by trzeba zmienic, podejrzewam ze w pliku htaccess, bo dodanie takiej reguły RewriteRule (.+)$ site.php?mlink=$1 [L] nic nie daje. Umiescilem w pliku site.php takie cos ale tez nic nie pomaga, dlatego prosze o pomoc

<?php
if($_GET['mlink'])
require "get_mlink.php";
if($_GET['link'])
require "get_link.php";
?>
Go to the top of the page
+Quote Post
trueblue
post 19.10.2022, 17:01:43
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


A w jaki sposób chciałbyś aby dwa adresy o takiej samej budowie były rozwijane na dwa odrębne adresy?

Skąd niby .htaccess ma wiedzieć, że raz /abc ma zostać przekierowane na skrypt.php?mlink=abc, a innym razem na skrypt.php?link=abc ?

Adresy w HTML musisz zbudować tak, aby ich struktura różniła się. Wtedy dodać odpowiednie reguły w .htaccess.

Cytat
Plik .htacces zamienia mi tylko aby link wygladal na przyjazny czyli domena.pl/tytul

Twój plik .htaccess tego nie robi i zazwyczaj się jego do tego nie używa.


--------------------
Go to the top of the page
+Quote Post
stanley1984
post 19.10.2022, 17:44:50
Post #3





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 12.02.2020

Ostrzeżenie: (0%)
-----


Myślałem że dobrym zwyczajem jest jeden punkt wejścia czyli wejście na site.php. Czyli wychodzi na to że muszę utworzyć nowy plik np. miasto.php i tam kierować odnośnik mlink? Jak będę mieć 10 podstron to muszę utworzyć 10 osobnych plików PHP i dla każdego osobny plik htaccess? Trochę coś nie tak. Może jest to kwestia zmiany wizualnej linka i zmiana tego w htaccess?

Ten post edytował stanley1984 19.10.2022, 17:47:58
Go to the top of the page
+Quote Post
trueblue
post 19.10.2022, 18:00:34
Post #4





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Napisałem wyżej, że musisz budować różne adresy w HTML. Nie dostrzegasz tego, że obecnie obydwa mają taką samą strukturę?


--------------------
Go to the top of the page
+Quote Post
nospor
post 19.10.2022, 18:59:23
Post #5





Grupa: Moderatorzy
Postów: 36 457
Pomógł: 6297
Dołączył: 27.12.2004




Ja tylko nie rozumiem co to robi w BAZY DANYCH... przenosze.

Co do problemu to tak jak ci pisano, masz miec rozna strukture linkow

Nie zadne:
/warszawa
/costamjeszcze

bo skad htaccess ma wiedziec ze warszawa to ma robic ?mlink=warszara a to drugie ma robic ?link=costamjeszcze

Ma byc np. cos ala:
/miasto/warszawa

albo
/m-warszawa

Albo cokolwiek sobie wymyslisz, tylko by to mialo rece i nogi i by htaccess byl wstanie odroznic te dwa rozne typy linkow.
I wtedy oba sobie mozesz przekierowywac na to samo site.php,


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
stanley1984
post 19.10.2022, 20:36:52
Post #6





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 12.02.2020

Ostrzeżenie: (0%)
-----


Rozumiem, Ok pierwszy link w takim razie wyglada tak:

<a href=miasto/".$row['mlink'].">".$row['miasto']."</a>

a drugi tak:

<a href=".$row['link'].">".$row['tytul']."</a>

Pierwszy pokazuje link domena.pl/miasto/warszawa, drugi pokazuje domena.pl/jakis-artykul

Jak w takim razie zmienic htaccess i oba przekierowac na site.php? Gdyż domena.pl/jakis-artykul wyswietla mi artykul, a domena.pl/miasto/warszawa nie wyswietla nic, stosujac oczywiscie ten htaccess

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule (.*) $1.php [L]

RewriteBase /
Options FollowSymLinks
RewriteCond %{HTTP_HOST} ^www.domena.pl(.*) [NC]
RewriteRule ^(.*)$ http://domena.pl/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.+)$ site.php?link=$1 [L]
Go to the top of the page
+Quote Post
trueblue
post 19.10.2022, 20:38:40
Post #7





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Musisz dodać regułę obsługującą stałą frazę miasto + zmienny fragment, czyli zmodyfikować obecną i wstawić jako nową.


--------------------
Go to the top of the page
+Quote Post
stanley1984
post 19.10.2022, 20:48:12
Post #8





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 12.02.2020

Ostrzeżenie: (0%)
-----


Szczerze to niewiem jak to zrobic, i dumam się już z tym trzeci dzien
Go to the top of the page
+Quote Post
trueblue
post 20.10.2022, 07:22:43
Post #9





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


https://stackoverflow.com/questions/2816837...eo-friendly-url


--------------------
Go to the top of the page
+Quote Post
stanley1984
post 20.10.2022, 21:07:29
Post #10





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 12.02.2020

Ostrzeżenie: (0%)
-----


Ok dzięki spróbuję coś pokombinować

No niestety dalej cos nie moge sad.gif

Mam takie linki

1.<a href=miasto/".$row['mlink'].">".$row['miasto']."</a>
2.<a href=".$row['link'].">".$row['tytul']."</a>

Mam taki plik htaccess:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.+)$ site.php?link=$1 [L]

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^miasto/([^/]+)$ miasto/site.php?mlink=$1 [L]

Tytuł mi pokazuje tzn domena.pl/tytul, a drugi link domena.pl/miasto/warszawa nie pokazuje nic
Go to the top of the page
+Quote Post
aras785
post 20.10.2022, 21:25:41
Post #11





Grupa: Zarejestrowani
Postów: 859
Pomógł: 177
Dołączył: 29.10.2009

Ostrzeżenie: (0%)
-----


zmień kolejność, rewrite z miastem musi być nad tym podstawowym /(.*)
Go to the top of the page
+Quote Post
stanley1984
post 20.10.2022, 21:33:58
Post #12





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 12.02.2020

Ostrzeżenie: (0%)
-----


Zamieniłem kolejnosc, efekt ten sam:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.+)$ site.php?link=$1 [L]
RewriteRule ^miasto/([^/]+)$ miasto/site.php?mlink=$1 [L]

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.+)$ site.php?link=$1 [L]

niewiem gdzie ja mam to z.....e
Go to the top of the page
+Quote Post
aras785
post 20.10.2022, 21:38:49
Post #13





Grupa: Zarejestrowani
Postów: 859
Pomógł: 177
Dołączył: 29.10.2009

Ostrzeżenie: (0%)
-----


RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^miasto/([^/]+)$ miasto/site.php?mlink=$1 [L]

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.+)$ site.php?link=$1 [L]
Go to the top of the page
+Quote Post
stanley1984
post 20.10.2022, 21:43:46
Post #14





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 12.02.2020

Ostrzeżenie: (0%)
-----


jak zmienie recznie ten pierwszy link na <a href=site.php?mlink=".$row['mlink'].">".$row['miasto']."</a> to dziala, ale wtedy w linku mam domena.pl/site.php?mlink=warszawa, a chcem, domena.pl/miasto/warszawa, jak zmienie na <a href=miasto/site.php?mlink=".$row['mlink'].">".$row['miasto']."</a> zeby te linki jak pisali poprzednicy wczesniej sie roznily to mam domena.pl/miasto/warszawa ale nie wyswietla sie nic

Cytat(aras785 @ 20.10.2022, 22:38:49 ) *
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^miasto/([^/]+)$ miasto/site.php?mlink=$1 [L]

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.+)$ site.php?link=$1 [L]


Taki pli htacess wywala mi bład po kliknieci w miasto:

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator at serwer2286199@serwer2286199.home.pl to inform them of the time this error occurred, and the actions you performed just before this error.
More information about this error may be available in the server error log.
Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.
Go to the top of the page
+Quote Post
aras785
post 20.10.2022, 22:09:39
Post #15





Grupa: Zarejestrowani
Postów: 859
Pomógł: 177
Dołączył: 29.10.2009

Ostrzeżenie: (0%)
-----


Zrobiłem test i u mnie wszystko działa dobrze...

hosting: mydevil.net
struktura:
miasto/site.php
  1. <?php var_dump($_SERVER); ?>


site.php
  1. <?php var_dump($_SERVER); ?>


.htaccess
  1. RewriteEngine On
  2. RewriteBase /
  3. RewriteCond %{REQUEST_FILENAME} !-f
  4. RewriteCond %{REQUEST_FILENAME} !-d
  5. RewriteRule ^miasto/([^/]+)$ miasto/site.php?mlink=$1 [L]
  6.  
  7. RewriteBase /
  8. RewriteCond %{REQUEST_FILENAME} !-f
  9. RewriteCond %{REQUEST_FILENAME} !-d
  10. RewriteRule (.+)$ site.php?link=$1 [L]



Po wpisaniu: domena.pl/miasto/warszawa dostaje odpowiedź ze skryptu: miasto/site.php
Po wpisaniu: domena.pl/test dostaje odpowiedź ze skryptu: site.php

Pozdrawiam

ps. na priv wysylam Ci link do testówki

Ten post edytował aras785 20.10.2022, 22:11:04
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
3 Użytkowników czyta ten temat (3 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 27.04.2024 - 21:26