使用mod重写来清理我的URL

时间:2014-01-11 23:59:14

标签: php apache .htaccess mod-rewrite url-rewriting

我知道这个问题之前可能已被多次询问过,但我可能会被投票,但是相信我,这是我在google上测试和阅读很多文章后的最后手段。

我有我想要重写为/index.php?action=gametypes&mode=control-point的网址/gametypes/control-point

我试过

RewriteEngine On 
RewriteRule ^gametypes/([^/\.]+)/?$ index.php?action=gametypes&mode=$1[L]

现在,当我访问/gametypes/control-point时,我找不到404,并且该网址显示重写为localhost/thecoremc/gametypes/control-point/index.php。它是404,因为没有index.php。知道我可以用什么来成功加载页面吗?

额外信息:我正在使用域localhost/thecoremc/和apache 2.4.4

运行我的localhost

谢谢!

4 个答案:

答案 0 :(得分:1)

你可以试试这个......

RewriteEngine On
RewriteRule ^([^/]*)/([^/]*)\.html$ /index.php?action=$1&mode=$2 [L]

我使用虚拟域,http://www.domain.com/index.php?action=gametypes&mode=control-point来实现此目的。

根据您的评论,试试这个......

RewriteEngine On
RewriteRule ^([^/]*)/([^/]*)\.html$ /thecoremc/index.php?action=$1&mode=$2 [L]

基于:http://localhost/thecoremc/index.php?action=gametypes&mode=control-point

答案 1 :(得分:0)

您可以在/thecoremc/.htaccess文件中使用此代码:

RewriteEngine On
RewriteBase /thecoremc/

RewriteRule ^([^/]+)/([^/]+)/?$ index.php?action=$1&mode=$2 [L,QSA]

答案 2 :(得分:0)

试试这个。这可能对您的工作有所帮助。

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{QUERY_STRING} ^id=(.*)&name=(.*)$
RewriteRule ^articles\.php$ /article/%1/%2? [R=301]
RewriteRule ^article/([^-]+)/([^-]+)$ /articles.php?article_id=$1&article_name=$2 [L]

以上代码将重定向

localhost/a1/articles.php?id=10&name=xyz

localhost/article/10/xyz

答案 3 :(得分:0)

试试这个:

Options +FollowSymLinks
RewriteEngine on
RewriteRule gametypes/(.*)/(.*)/ index.php?action=$1&mode=$2