如何使用.htaccess

时间:2015-09-14 16:22:39

标签: php wordpress .htaccess mod-rewrite

所以这是我的htaccess文件,因为Wordpress提供它

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

我在/ events有一个页面,我想通过模板PHP文件添加一个文本块,具体取决于是否存在URL参数。

所以我在网上看了一下,并尝试为它写一个.htaccess规则。我想出的是这个

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^events/([^/\.]+)/?$ events/?flow=$1 [L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

但是,我认为这不符合我的要求。原始页面的链接是/ events?flow = open-evenings,在事件页面中,我有通常的$ _GET东西:

$flow = isset($_GET['flow']) ? $_GET['flow'] : '';
if($flow == 'open-evenings') { echo "blah"; }

但是当我尝试查看URL / events / open-evenings时,我得到404错误页面。我把规则放在了错误的地方,还是我没有做一些明显的事情?感谢所有帮助!

更新:这是使用Wordpress,所以也许我不应该使用已经重写的网址?我应该使用index.php吗?但是,这仍然会吸引我正在尝试使用的漂亮网址吗?

我已尝试将网址更改为index.php,尝试将其设置为正常工作,但是根据以下规则,我仍然会获得404页面。

RewriteRule ^events/([^/]*)$ /index.php?flow=$1

任何人都可以帮我试试这个吗?

1 个答案:

答案 0 :(得分:3)

这将执行以下操作:

1>   temp.example.com/save.php?item=xxxxx&id=xxx&type=1 
2>   temp.example.com/save.php?item=xxxxx&id=xxx&type=2 

就像

1>   temp.example.com/save/xxxxx/xxx
2>   temp.example.com/save/xxxxx/xxx

您可以在root .htaccess中使用这些规则:

RewriteCond %{THE_REQUEST} /save\.php\?item=([^\s&]+)&id=([^\s&]+)&type=([^\s&]+)\s [NC]
RewriteRule ^ save/%1/%2/%3? [R=302,L]

RewriteRule ^save/([\w-]+)/([\w-]+)/([\w-]+)/?$ save.php?item=$1&id=$2&type=$3 [L,QSA,NC]

如果有帮助,请告诉我......

将所需的值替换为您的值。这是否与您需要的相似?