htaccess内部重写URL与查询参数

时间:2016-10-08 13:36:19

标签: apache .htaccess mod-rewrite

我有一个处理

请求的php文件http://example.com/somepath/?q=query
http://example.com/some/other/path/?q=query
http://example.com/another/path/?q=query
http://example.com/yet/another/path/?q=query

我喜欢处理

请求的同一个文件
.htaccess

我不想将php文件复制到文件系统中的多个位置。我认为使用内部重写规则将是一种更好的方法。以下是我放在顶级/var/www/.htaccess文件RewriteRule ^some/other/path /somepath/%{QUERY_STRING} [PT] 中的内容:

import random 
computer=random.randint(1, 100) 
guess=int(input("guess the number")) 
if guess > 100: 
    print("your guess is too high") 
elif guess < 1: 
    print("your guess is too low") 
elif guess==computer: 
    print("well done!") 
else: 
    print("you\'re wrong, guess again") 

但它不起作用。我得到http://example.com/some/other/path/?q=query

的404

我知道mod_rewrite已启用,因为我在相同的.htaccess文件中有外部重写规则(301和302重定向),并且可以正常工作。

1 个答案:

答案 0 :(得分:1)

您可以将此规则作为您的第一条规则放置在网站根目录.htaccess中,它将处理具有?q=查询参数的任何网址:

RewriteEngine On

RewriteCond %{QUERY_STRING} (^|&)q= [NC]
RewriteRule ^ somepath/index.php [L]