【问题标题】:mod rewrite losing post variables ajaxmod重写丢失的帖子变量ajax
【发布时间】:2017-03-01 22:50:56
【问题描述】:

我正在为我的 URL 使用 mod rewrite。我有一个通过 ajax 提交的表单,但是没有传递 post 变量。我正在尝试从 home.php 发布到 new_post.php

有没有办法从使用以下规则中排除 new_post.php 文件?这样就可以传递变量了。我尝试使用:

RewriteCond %{REQUEST_METHOD} !POST
RewriteRule ^new_post.php / [L,R=301]

我在我的 htaccess 中使用以下内容:

Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [L]

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

现在使用:

Options +FollowSymLinks -MultiViews    
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R=301,L,NE]

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

RewriteRule ^new_post\.php$ / [L,NC]

我正在通过 AJAX 从 home.php 向 new_post.php 提交一个表单。 new_post.php 将数据插入mysql,插入数据后,我将用户应该重定向到的新url回显为:

echo "post.php?id=$id";

在 AJAX 成功中,我使用 location(data);将用户重定向到新帖子。

有两个问题:

url 重定向到来自 xampp 的 ACCESS FORBIDDEN 消息,并且未传递 post 变量

【问题讨论】:

    标签: php ajax .htaccess mod-rewrite


    【解决方案1】:

    按此顺序制定规则:

    Options +FollowSymLinks -MultiViews    
    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{REQUEST_METHOD} !POST
    RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
    RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
    
    RewriteCond %{REQUEST_METHOD} !POST
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
    RewriteRule ^ %1 [R=301,L,NE]
    
    RewriteCond %{REQUEST_FILENAME}.php -f
    RewriteRule ^(.+?)/?$ $1.php [L]
    
    RewriteRule ^post\.php$ / [L,NC]
    

    【讨论】:

    • 试过了,但变量仍然没有被传递
    • 您必须彻底清除浏览器缓存。 AJAX 请求的完整 URL 是什么?
    • ajax url 是 new_post.php
    • 然后我在 ajax php 文件 echo "post.php?id=$id" 中回显新的 url,然后在 ajax 中回显位置(数据),但这被重定向到 mydomain.com/
    • 不理解您的评论,完全相同的代码适用于我的 Apache 并保留所有 POST 数据。您还有其他一些代码/配置问题。
    猜你喜欢
    • 2011-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多