Try to learn Nuxt, some wine and some water as a Swedish proverb says.
I got som problem with the error handling, when I build app (no problem in dev). Looks like it do not live so good with Apache and its htaccess file.
This is my htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>
The basic error handling function (error.vue in site root), for an example if I go to http://nuxtshop.localhost/xyz/zyz, it triggers. But its the error with createError function that do not trigger right, it just redirect to home and then I get a blank page (actually the default.vue layout, no slot populated). For an example I have a product page with this code, were I try to handle if the product do not exist (url, i.e. params do not exist).
Script:
<script setup>
const { id } = useRoute().params;
const runtimeConfig = useRuntimeConfig()
const uri =`${runtimeConfig.public.apiUrl}/api/content/item/Products/${id}`
const { data: product } = await useFetch(uri, {
method: "GET",
key: id,
})
if (!product.value) {
throw createError({ statusCode: 404, statusMessage: "Procuct not found
(shop id)" })
}
</script>
Edit:
Guess it is the sam problem as this topic:
https://github.com/nuxt/nuxt/issues/15432
I had figure it out by my self. Removed the last line in the htaccess file. Also had to do a fatal:true, on the createError (if not a blank page). The change in htaccess removed the funny populating off error message last in document (after footer). For the record, This is config without app.vue (Nuxt default instead), and Nuxt 3.
It also functions with the function showError (seems faster).
So final htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
</IfModule>
ErrorDocument 404 /404.html
and error handling alternatives:
throw createError({statusCode: 404, statusMessage: "Page
not found.", fatal:true})
ore:
showError({statusCode: 404, statusMessage: "Page not
found."})
I am not an expert on Apache, but the htaccess function with Nuxt in builded mode now, but if some one else have a comment, feel free to post!
Related
I need your help please!
I have made deploy and build of aplication. but when i redirect for any page i have this error:
Uncaught SyntaxError: Unexpected token <
I think it was because the browser await .html archive and chunk.js is open like this img
print from error
the route is fine, he finds the route, but don't open file.
before some search i found things like a .htaccess and i have tryied but doesn't works.
i have tryied these two models of .htacess on public/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule . /index.html [L]
</IfModule>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.html [QSA,L]
but it doesn't works too.
Server
const root = require('path').join(__dirname, 'client', 'build')
app.use(express.static(root));
app.get("*", (req, res) => {
res.sendFile('index.html', { root });
})
i don't have any webserver, sorry, but im a student, and im still learning...
please help guys!
If you using Create React App check your build/asset-manifest.json if have correct paths to the files. If not, change them manually or - what is better - change or set "homepage" value in package.json to proper one. And last tip - read carefully whole output of npm run build - it helped me. Whole bugfinding spends me 3 hours :(
you add the line of code below to index.html in the public folder
<base href="your root path">
Or you can refer to the link below:
https://skryvets.com/blog/2018/09/20/an-elegant-solution-of-deploying-react-app-into-a-subdirectory/
My website is giving me a "This website is not secure" and I can't find the root of it, even though I double checked through everything to see if there are any http and switched them to https. I also have cloudflare forcing https.
I have checked the network tab and found one URL giving me trouble but it doesn't give me much information
The URL is giving a 301 moved permanently. I don't know where in my html I am requesting this site. I even used ctrl + f nothing showed up.
It's just requesting http://mywebsite.com/ but there is nothing I can see in my html requesting a http version of my site. I don't have anything that would cause my website to request http in .htaccess either.
RewriteEngine On
Options -Indexes
RewriteRule ^folder/?$ - [F]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ /index.html [L]
ErrorDocument 403 /index.html
ErrorDocument 404 /index.html
ErrorDocument 500 /index.html
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^/403/$
RewriteRule ^(.*)$ /index.html [L]
RewriteCond %{REQUEST_URI} ^/404/$
RewriteRule ^(.*)$ /index.html [L]
RewriteCond %{REQUEST_URI} ^/500/$
RewriteRule ^(.*)$ /index.html [L]
Is there something I'm missing?
I found the issue. It looks like it was jQuery that was requesting a http version of my site.
I couldn't ctrl + f it because it was a cloudflare jQuery link.
https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js
On line 2727 it was checking using http. (The picture shows https is because I just changed it)
The Fix
Save the jQuery locally and change http to https.
I added this code to my .htaccess file to get rid of index.php, but now all the pages 404 (the hyperlinks are mapped to the correct url)
# 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
i set up my permalinks using http://1.1.1.1/%postname%/
what are the next steps in order to troubleshoot this issue?
can anyone provide me with a rewrite link and where that file may be located (I don't fully understand the other similar posts as they all wrote their own rewrite rules, where would I find that file?)
I have already installed monkeyman rewrite analyzer, but don't know where to start troubleshooting from there.
Any links or information is helpful, even if is not a direct solution to the problem, I will post my solution when completed.
On the web page the .htaccess is:
RewriteEngine On
RewriteBase /
Options -MultiViews
DirectorySlash Off
# skip POST requests
RewriteCond %{REQUEST_METHOD} POST
RewriteRule ^ - [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+?)/?$ /$1.php [L]
# redirect to .php-less link if requested directly
RewriteCond %{THE_REQUEST} ^[A-Z]+\s.+\.php\sHTTP/.+
RewriteRule ^(.+)\.php $1 [R=301,L]
Options All -Indexes
ErrorDocument 403 /img/error.php
ErrorDocument 404 /img/error.php
ErrorDocument 500 /img/500.png
It causes the next error:
Failed to parse SourceMap: .../js/bootstrap-select.js.map
When I delete it, the error doesn't occur.
How should I modify .htaccess?
Even though you had answered yourself just i want to post this so that others with this issue will know exactly what that happens
Warning:
Do not use .htaccess to redirect error to another HTML/PHP page or server
that isn't your own (such as this error.php). Errors can be replaced
by other images, not with an HTML or PHP page as that might cause indefinite
loop too.
Solved the problem by changing error.php to a picture ( in error.php there was redirect to index page ).
I have developed a Codeigniter prototype application and hosted with Godaddy.com during the development phase for testing purposes without issue. This application uses a combination of javascript, jquery, HTML5, CSS and PHP (Codeigniter Framework). This week I have transferred the application to the clients server and have had many configuration issues but finally hit a wall.
The client set up a fresh install on a new Linux/Apache2 server with PHP5. mod_rewrite is enabled and allowoverride is set to all. The Apache2 settings (per the client are)...
My .htaccess script(since this issue I have tried many different .htaccess versions)...
RewriteEngine On
RewriteBase /CI/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
My javascript code for posting serialized form data to PHP page...
$.post('login_ctrl/authenticateuserlogon', $formData, function($responseData)
{
$userAuthentication=$responseData.userAuthentication;
if ($userAuthentication=='success')
{
window.location.href = "student_portal_ctrl";
}
else
{
$('#loginErrDiv').text('Username or Password is incorrect - Please try again.');
return;
}
});
My codeigniter file structure is...
-root /
/CI
/application
/system
/index.php
/license.txt
/.htaccess
When I post to this controller/method, the browser outputs...
-----EDIT-----
Sorry, forgot to include my config.php settings, here they are...
$config['base_url'] = '';
$config['index_page'] = '';
$config['uri_protocol'] = 'AUTO'; //I have tested the app using all of codeigniters
//default URI Protocols
-----EDIT #2-----
This is the method on the controller that is receiving the 404 error
//AUTHENTICATE USER LOGIN FUNCTION
public function authenticateuserlogon()
{
//SETTING $FORMDATA TO SERIALIZED POST DATA
$formData = $this->input->post();
//Sets the Method for the login_mdl
$modelMethod=$formData['modelMethod'];
//LOADING USER AUTHENTICATION LOGIN MODEL
$this->load->model('login_mdl');
//SENDING FORMDATA TO MODEL AND RETURING DATA TO $RESPONSEDATA
$responseData = array();
$responseData = $this->login_mdl->$modelMethod($formData);
//OUTPUTTING JSON RESPONSE DATA BACK TO JAVASCRIPT
$this->output->set_output(json_encode($responseData));
}
Use this .htaccess which is tested by me and working fine
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /CI/
#Removes access to the system folder by users.
#Additionally this will allow you to create a System.php controller,
#previously this would not have been possible.
#'system' can be replaced if you have renamed your system folder.
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php/$1 [L]
#When your application folder isn't in the system folder
#This snippet prevents user access to the application folder
#Rename 'application' to your applications folder name.
RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ /index.php/$1 [L]
#Checks to see if the user is attempting to access a valid file,
#such as an image or css document, if this isn't true it sends the
#request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
# If we don't have mod_rewrite installed, all 404's
# can be sent to index.php, and everything works as normal.
ErrorDocument 404 /index.php
</IfModule>
and in your config.php file use this,
$config['base_url'] = "http://".$_SERVER['HTTP_HOST'];