.htaccess - 用正斜杠替换连字符(破折号)' - ''

时间:2014-11-26 17:06:21

标签: php regex apache .htaccess mod-rewrite

我遇到了.htaccess的问题

此时我有这样的事情:

http://example.com/page-example?getVariable=1234

但我想要的是:

http://example.com/page/example/1234

我尝试使用.htacces用斜杠替换连字符

Options +FollowSymlinks -MultiViews
RewriteRule ^([^/]+)-([^/]+).php/?$ /$1/$2 [R,L]

我得到了类似的东西

 http://example.com/page/example?getVariable=1234

但服务器无法找到路径,我认为这是因为它承认“页面”是一个文件夹。

我怎样才能做我想做的事,但是服务器在根文件夹中搜索文件'page-example.php'而不是'/ page /'中的'example.php'?

PS:我已经使用下面的代码来删除.php扩展名和'www。'来自网址。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

1 个答案:

答案 0 :(得分:1)

在您已有的规则之前,请尝试添加:

RewriteCond %{THE_REQUEST} \ /+page-([^/]+)(?:\.php|)\?getVariable=([^&\ ]+)
RewriteRule ^ /page/%1/%2? [L,R]

RewriteRule ^page/([^/]+)/([^/]+)$ /page-$1.php?getVariable=$2 [L,QSA]

所以整个事情看起来像:

RewriteEngine on

RewriteCond %{THE_REQUEST} \ /+page-([^/]+)(?:\.php|)\?getVariable=([^&\ ]+)
RewriteRule ^ /page/%1/%2? [L,R]

RewriteRule ^page/([^/]+)/([^/]+)$ /page-$1.php?getVariable=$2 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php