1

私はhtaccessでこのようなことをする方法を見つけようとしています:

#This address links to a place that does not exist
localhost/prefix/games/userid/game-name

黙って([L]、私は推測する)にリダイレクトする

#This folder has an index.php, so we're good!
localhost/prefix/protected/files/userid/game-name/

私はリンクを持つことができることに気づきました:

localhost/prefix/games/index.php?user=userid&title=game-name

そして、index.phpにリダイレクトを入れてもらいます...

しかし、私は自分のWebサイトのリンクにURLパラメーターを表示したくありません...したがって、実際にはhtaccessである必要があると思います。

私は認めなければなりません、私はそのhtaccessのものを読みました、そしてそれは私の理解する方法で誰も説明していないので私の頭を通り過ぎます。

どんな助けでも大歓迎です。

編集::///

RewriteEngine On        
RewriteBase /prefix

# stop directory listings
Options -Indexes 

#stops htaccess views
<Files .htaccess>
order allow,deny
deny from all
</Files>

# remove .php; use THE_REQUEST to prevent infinite loops
    RewriteCond %{THE_REQUEST} ^GET\ (.*)\.php\ HTTP
    RewriteRule (.*)\.php$ $1 [R=301]         

# remove index
    RewriteRule (.*)/index$ $1/ [R=301]

# remove slash if not directory
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} /$
    RewriteRule (.*)/ $1 [R=301]

# add .php to access file, but don't redirect
    RewriteCond %{REQUEST_FILENAME}.php -f
    RewriteCond %{REQUEST_URI} !/$
    RewriteRule (.*) $1\.php [L]    

# redirect game folders
    RewriteRule ^prefix/games/(.*)$ /prefix/protected/files/$1/ [R=301]  
4

1 に答える 1

0

あなたが持つことができます

RewriteRule ^prefix/games/(.*)$ prefix/protected/files/$1 [L]

http://localhost/prefix/games/userid/game-nameすべてのリンクをにリダイレクトするにはhttp://localhost/prefix/protected/files/userid/game-name

または、あなたは持つことができます

RewriteCond %{QUERY_STRING} user=(.*)&title=(.*)$
RewriteRule ^prefix/games/index.php$ /prefix/protected/files/%1/%2? [L]

次のようなすべてのリンクを移動するにはhttp://localhost/prefix/games/index.php?user=userid&title=game-namehttp://localhost/prefix/protected/files/userid/game-name

于 2012-04-24T22:51:44.420 に答える