1

やあみんな、私はこのようなURLを変換しようとしています

example.com/sometype/author-name/sort-date または example.com/sometype/author-name/sort-date/something-value/

一般的なソリューションが必要です。

私はこれにかなり慣れておらず、正規表現が少し苦手です。だから私が書くことができたのは、これを特定することでした

sometype/author-name/sort-date/

また

sometype/author-name/sort-date/something-value/

/([a-zA-Z0-9]+)/ ([a-zA-Z0-9]+)-([a-zA-Z0-9]+)

これをこの形式に書き換えたい

example.come?data={"par1":"sometype","author":"name","sort":"date","something":"vale"}

また

example.come?data={"par1":"sometype","author":"name","sort":"date"}

4

1 に答える 1

0

最初に、あなたが求めていることは非常に珍しく、mod_rewrite にとって非常にトリッキーであることを理解してください。再帰ベースのコードが必要なだけでなく、このコードはあまり読みにくくなります。

その注意事項に従って、mod_rewrite と .htaccess を有効にしてからhttpd.conf、このコードをディレクトリの.htaccess下に配置します。DOCUMENT_ROOT

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

## If the request is for a valid directory
RewriteCond %{REQUEST_FILENAME} -d [OR]
## If the request is for a valid file
RewriteCond %{REQUEST_FILENAME} -f [OR]
## If the request is for a valid link
RewriteCond %{REQUEST_FILENAME} -l
## don't do anything
RewriteRule ^ - [L]

RewriteRule ^([^/]+)/([^/]+)(.*?)/?$ $1\",\"$2$3 [L]

RewriteRule ^([^-]+)-([^,]+)(.*)$ $1\":\"$2$3 [L]

RewriteCond %{QUERY_STRING} ^$
RewriteRule ^(.*)$ /?data={\"part1\":\"$1\"} [L]
于 2012-05-18T23:43:09.080 に答える