.htaccess, form och PHP-problem

Permalänk
Medlem

.htaccess, form och PHP-problem

Hej,

Jag är helt ny till detta med .htaccess och ReWriteRule's osv. Jag har fått ihop en hel del men jag får det inte att fungera när jag vill "blanda" omskrivna URL variabler med icke omskrivna. Jag ska visa vad jag menar:

.htaccess

ReWriteRule ^content/([a-z]+)/([a-z]+) /content.php?content=$1&type=$2

HTML-kod

<form method="get" action="/content/news/edit"> <input name="id" type="text"/> <input type="submit" value="Submit"> </form>

Mitt problem är att när jag skriver t.ex. 1 och klickar på submit så kommer jag till url'en: www.example/content/news/edit?id=1. Det ser ut som jag vill men något är fel då jag inte kan använda $_GET["id"] alls.

Några förslag. X-timmar har gått och det känns som man testat allt (men antagligen inte).

Permalänk
Medlem

Tror att följande regel möjligtvis kan fungera bättre (otestad):

RewriteRule ^content/([a-z]+)/([a-z]+)\?(.*) /content.php?content=$1&type=$2&$3

Möjligtvis kan man ersätta (.*) med något mindre generellt, typ ([a-z=0-9&]+).

Permalänk
Medlem

Nej jag får tyvärr inte det att fungera heller. Glömde säga men jag vill även att "www.example.com/content/example/example" ska vara nåbar. Inte endast med en variabel på slutet.

Så det ska vara www.example.com/content/example/example. Där finns en get form som laddar laddar om sig själv och lägger till en url variabel som sedan ska gå nyttja med $_GET[id]: www.example.com/content/example/example?id=7 t.ex.

Permalänk
Medlem
Skrivet av Zelloxy:

Nej jag får tyvärr inte det att fungera heller. Glömde säga men jag vill även att "www.example.com/content/example/example" ska vara nåbar. Inte endast med en variabel på slutet.

Så det ska vara www.example.com/content/example/example. Där finns en get form som laddar laddar om sig själv och lägger till en url variabel som sedan ska gå nyttja med $_GET[id]: www.example.com/content/example/example?id=7 t.ex.

Oj, saknas nog ett frågetecken där. Testa detta:

RewriteRule ^content/([a-z]+)/([/a-z]+)\??([a-z=0-9&]*) /content.php?content=$1&type=$2&$3

Permalänk
Medlem

Nej får inte heller det att fungera. Testade även med:

ReWriteRule ^content/([a-z]+)/([a-z]+)(\?id=([0-9]*)?) /content.php?content=$1&type=$2&id=$3

Permalänk
Medlem

Nedanstående regexp matchar iafl "/content/news/edit?id=1"
^/(.*?)/(.*?)/(.*?)\?id=([0-9]+)$

Permalänk
Medlem

ReWriteRule ^content/([a-z]+)/([a-z]+)\?id=([0-9]+)$ /content.php?content=$1&type=$2&id=$3

Ja, det är ju i princip samma som min ovanför. Vi förutsätter att detta fungerar (vilket jag verkligen tycker att det borde). Vad kan du problemet vara för när jag submitar ett värde i min form så får jag inte fram värdet med $_GET efteråt.

Kan ge helheten så kanske det hjälper:

if ($_GET["content]" == "example" && $_GET["type"] == "example2") { if (isset($_GET["id"])) { echo $_GET["id"]; } elseif { echo "<form name=\"test\" method=\"get\" action=\"\"> <input name=\"id\" type=\"text\"> <input type=\"submit\"> </form>"; } }

Med ovanstående kod samt .htaccess ReWriteRule får jag inte "echo $_GET["id"];" att fungera. Den skriver inte ut något värde fast t.ex. ?id=1 står sist i URL'en. Någon idé? :/

skrivit fel
Permalänk
Medlem

Följande verkar fungera för mig

RewriteRule ^content/([a-z]+)/([/a-z]+)$ /content.php?content=$1&type=$2&%{QUERY_STRING}

Besöker jag content/a/b?id=1&action=sleep så ger print_r($_GET) mig detta

Array ( [content] => a [type] => b [id] => 1 [action] => sleep )

Permalänk
Medlem

Yepp, det verkar som query string inte anses vara en del av URLen så allt efter ? kan inte direkt matchas.
Nedanstående fungerar åsså.
ReWriteRule ^content/news/edit$ /content.php?$1 [QSA,L]

Permalänk
Medlem

Har testat nu och med [QSA] får jag det resultat jag förväntar mig och dessutom vill ha. underbart. en dags arbete... hehe.

tack hur som helst!