バウンティノート:add_rewrite_rulesを使用して自分の解決策を見つけました。私は賞金をApacheのRewriteRules形式で同じソリューションを提供できる人に報います。取得文字列をスラッグに変換するには?
私はHow can I create friendly URLs with .htaccess?を読んだことがありますが、それはまだ難しく、複雑です。
私はWordPress Multisiteを実行しています。サブドメインのWebサイトcp.example.comを持っており、このサブドメインにPHPアプリケーションを作成しています。
私はあるウェブサイトのアドレスを持っているが、このようになります:
http://cp.example.com/sales/12345/userid/123456/83hkuhdqhuhd873xsuhdqwiuhdiq
そして、私はその意志を行うためにあたかも:
http://cp.example.com/sales.php?id=12345&userid=123456&uid=83hkuhdqhuhd873xsuhdqwiuhdiq
を介して、それが可能私は、ユーザーのアクセスウェブサイトをできるようにするためにですPHPはまだ値に$_GET
を行うことができるでしょうか?
たとえば$_GET['id']
,$_GET['userid']
および$_GET['uid']
?
私のベースにはWordPressを使用していますが、別のテーブルを使用してアプリケーションの終了を書いています。
私は上記の目的を達成するためにカスタムポストタイプを使用しないようにしています。
私は以下を試しました。
私は、MySQLから情報を取得するために
$_GET['id']
、$_GET['userid']
と$_GET['uid']
が必要になりますview_sales.phpにテンプレートファイルview_sales.phpを作成します。view_sales.php
また、別のヘッダーファイルを使用しましたが、get_header('sales')
です。in header-sales.php上記のスタックオーバーフローページから取得した次のコードを追加しました。
$path_components = explode('/', $_GET['url']); $id=$path_components[0]; $userid=$path_components[1]; $uid=$path_components[2];
それはマルチサイトですので、私は私の
/public_html/example.com
ドメインに1つの.htacess
ウェブサイトを持っているウェブサイトは、 http://cp.example.com/sales/?id=123456&userid=123456&token=98917397219372iheu1iある今ので、私はので、私は上記のコードは提案追加スラグの販売と新しいWPのページを作成しました私の
.htaccess
になりました。RewriteEngine On RewriteBase/ RewriteRule ^index\.php$ - [L] # add a trailing slash to /wp-admin RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule^- [L] RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L] RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L] RewriteRule . index.php [L] <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] </IfModule>
何もまだ醜いURLにリダイレクトする、現時点では作業していません。
編集:
私は上記のすべての異なるバリエーションを試みたが、何も動作以下
RewriteCond %{HTTP_HOST} !^cp\.example\.com [NC]
RewriteRule ^listing/([a-z0-9]+)$ listing/?action=$1 [L,NC]
RewriteRule ^view/([a-z9-9]+)$ view/?id=$ [L,NC]
を試してみました。
私は
function pa_custom_rules() {
add_rewrite_rule('^/listing/([^/]+)/$', 'index.php?pagename=listing&action=$matches[1]', 'top');
}
add_action('init', 'pa_custom_rules');
が書き換え配列を印刷し、私は新しいルール
[^/listing/([^/]+)/$] => index.php?pagename=listing&action=$matches[1]
客員index.phpの作品が、行くのを見ることができます試してみましたadd_rewrite_rule方法へ/リスト/テスト用に編集/失敗する。 404エラーを返します。
それはWordPressのマルチサイトを破るでしょうか? –
@Dave Teu残念ながら私は知らない。それはwordpressが現在のサイトの名前をどのように決定するかによって異なります。 – Eugeny
私はRewritecondについて他のサイトから読みましたので、次のRewriteCond%{HTTP_HOST}を追加しました!^ cp。[NC] RewriteCond%{HTTP_HOST}^example.com $ [NC] RewriteRule^listing /([a-z0-9] +)$ listing /?action = $ 1 [L、NC]しかし、それは私に404エラーを与え続けます –