-1

私はそれをURLフレンドリーにしようとしているところでURL短縮サービスをやっています..現在、私のアドレスはこのように入力されています "example.com/index.php?name=sitename" 「..クールな書き換えルールを使用できると思いますが、機能させることができません..

私はこのようなことをしましたが、うまくいきません

Options All -Indexes
DirectoryIndex index.php index.html index.htm
RewriteEngine On
RewriteRule ^([^/]*)/$ /index.php?name=$1 [L]

しかし、私は知りません:s?

4

3 に答える 3

2

配置する必要があるコードは次のとおりですDOCUMENT_ROOT/.htaccess

Options All +FollowSymLinks -MultiViews -Indexes
DirectoryIndex index.php index.html index.htm
RewriteEngine On

# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+index\.php\?name=([^\s&]+) [NC]
RewriteRule ^ /%1? [R=301,L]

# internal forward from pretty URL to actual one
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ /index.php?name=$1 [L,QSA]

参考:Apache mod_rewrite の紹介

于 2013-10-16T09:30:06.057 に答える
1

/ドメインの後に複数の URL がある場合、正規表現は失敗します。[^/]これは、これらの文字の 1 つが検出されるとすぐに停止し、最後に/$.

これらの URL を変換したいとします。

example.com/HiThere
example.com/Your/Page

に:

example.com/index.php?name=HiThere
example.com/index.php?name=Your/Page

代わりに、次の書き換えルールを試してください。

RewriteRule ^(.*?)/$ /index.php?name=$1 [L]

(.*?)これは、最後に達するまですべての文字を探します/[L]ただし、フラグについては100%確信が持てません。

于 2013-10-16T09:24:35.963 に答える
0

最も簡単な方法は、404 エラーを使用して index.php をポイントし、次にsitenameusing php .htaccess ファイルを取得することです。

ErrorDocument 404 /index.php

PHP コード

<?php 
$sitename=substr(strrchr($_SERVER["REQUEST_URI"],"/"),"1");

「example.com/sitename」にアクセスするだけで、サイト名が に保存され$sitenameます。

if($sitename==""){//Show your HomePage}

それが役に立てば幸い!!

于 2013-10-16T09:29:41.900 に答える