0

私はこれを検索しましたが、誰も同じ問題を抱えていません。

今、私は醜いURL(私が持っているもの)を素敵なURLに変換するためのコードが必要です:

  • 醜いURL:domain.com/aanmelden?referral=admin
  • 素敵なURL:domain.com/aanmelden/admin

Ikは非常に多くのコードを試しましたが、誰も私のために働きませんでした。):

提案?Thnx!

(私の現在のhtaccess :)

ErrorDocument 401 /errordocs/401.php
ErrorDocument 403 /errordocs/403.php
ErrorDocument 404 /errordocs/404.php
ErrorDocument 500 /errordocs/500.php

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} !^domain.nl$ [NC]
RewriteRule ^(.*)$ http://domain.nl/$1 [L,R=301]

RewriteCond %{REQUEST_URI} !/$ 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

RewriteCond %{THE_REQUEST} ^[A-Z]+\s.+\.php\sHTTP/.+
RewriteRule ^(.+)\.php $1 [R=301,L]

どこに何を配置する必要がありますか?

編集:

明確にするために:

  • ユーザーがNiceUrlにアクセスすると、NiceUrlに留まります。
  • ユーザーが醜いURLにアクセスすると、NiceURLにリダイレクトされます。
4

1 に答える 1

1

これは些細な書き直しです:

admin任意の小文字の文字列を使用できる場合は、パターンを使用して、リクエストURIの終了前の([a-z]+)$1つ以上の小文字をキャプチャします。/

RewriteEngine On
RewriteRule ^aanmelden/([a-z]+)$ aanmelden?referral=$1 [L]

adminが本当にのみの場合はadmin、次のようにハードコーディングできます

RewriteEngine On
RewriteRule ^aanmelden/admin aanmelden?referral=admin [L]

アップデート

投稿されたばかりの既存の書き換えのコンテキストでは、.phpを追加するルールの前にこのルールを追加する必要があります。これは、このパターンにも一致するためです。

# Do this before the rule that adds .php
# Also added condition so this doesn't apply to real files...
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^aanmelden/([a-z]+)$ aanmelden?referral=$1 [L]

RewriteCond %{REQUEST_URI} !/$ 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

アップデート2

エンドユーザーに醜いURLを取得して、それを素敵なURLに書き直してもらいたい場合は、次を使用します。

RewriteCond %{REQUEST_QUERYSTRING} referral=([a-z]+)
RewriteRule ^aanmelden aanmelden/%1 [L]
于 2012-04-05T13:38:39.270 に答える